ios - Sprite-Kit:停留在使用Tile Editor创建的边界内-LMLPHP
我正在测试Xcode8(8.2.2)附带的tile编辑器的可能性。我已经创建了一个像上面所示的吃豆人一样的地图。在一个矩形的左上角有一个游戏角色。我想知道是否有一个简单的方法使游戏人物留在蓝色边界内?到目前为止,我已经设置了一个(红色)墙到左边,就像下面通过场景编辑器。我有下面几行代码。

struct PhysicsCategory {
    static let None:    UInt32 = 0
    static let Player:  UInt32 = 0b1 // 1
    static let Edge:    UInt32 = 0b10 // 2
    static let Wall:    UInt32 = 0b100 // 4
}

class GameScene: SKScene {
    // MARK: - Variables
    var background: SKTileMapNode! // background
    var player: SKNode! // player

    // MARK: - DidMove
    override func didMove(to view: SKView) {
        setupNodes()
    }

    func setupNodes() {
        background = self.childNode(withName: "World") as! SKTileMapNode
        background.physicsBody = SKPhysicsBody(edgeLoopFrom: background.frame)
        background.physicsBody?.categoryBitMask = PhysicsCategory.Edge

        let wall = self.childNode(withName: "Wall")
        wall?.physicsBody = SKPhysicsBody(rectangleOf: (wall?.frame.size)!)
        wall?.physicsBody?.isDynamic = false
        wall?.physicsBody?.categoryBitMask = PhysicsCategory.Wall

        player = self.childNode(withName: "Player")
        player.physicsBody = SKPhysicsBody(circleOfRadius: 32)
        player.physicsBody?.categoryBitMask = PhysicsCategory.Player
        player.physicsBody?.collisionBitMask = 4
        player.physicsBody?.allowsRotation = false
    }
}

用户可以使用CoreMotion来控制播放器的位置。目前,游戏角色确实尊重左边缘。但如果地图变得复杂,我可能会在这里和那里放置很多墙。这种方式会扼杀乐趣,因为它可能是耗时的。那么,有没有一种更简单的方法使游戏角色与地图边界碰撞?
ios - Sprite-Kit:停留在使用Tile Editor创建的边界内-LMLPHP

最佳答案

看看GameplayKit的寻路类,特别是GKGridGraph和GKGridGraphNode,它们允许您指定一个只有这种直线路径的图。
这里有一个来自苹果的好教程:https://developer.apple.com/library/content/documentation/General/Conceptual/GameplayKit_Guide/Pathfinding.html
还有一个演示应用程序:https://developer.apple.com/library/content/samplecode/Pathfinder_GameplayKit/Introduction/Intro.html#//apple_ref/doc/uid/TP40016461

关于ios - Sprite-Kit:停留在使用Tile Editor创建的边界内,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43357345/

10-14 22:03