SpriteKit:节点在另一个节点之上

时间:2015-11-07 22:25:55

标签: swift sprite-kit sprite skspritenode scene

我想在后台创建我的播放器。不知怎的,这不起作用。节点计数器上升一,但不可见。我添加背景后添加播放器,因此它应该在顶部。我用来创建播放器的代码:

var player = SKSpriteNode()

func addPlayer(gameScene: GameScene, xPos: CGFloat, yPos: CGFloat){
    player = SKSpriteNode(imageNamed: "player")
    player.size = CGSize(width: fieldsWidth, height: fieldsWidth)
    player.position = CGPoint(x: xPos, y: yPos)
    gameScene.addChild(player)
}

我从另一个类中访问该函数:

        person().addPlayer(self, xPos: fieldsWidth/2, yPos: fieldsWidth/2)

希望你能帮助我。

2 个答案:

答案 0 :(得分:1)

如果您确定在所需位置添加了节点,这可能就是这里的情况因为节点数递增,您可以设置播放器和背景zPosition来制作播放器在背景之上:

var player = SKSpriteNode()

//1. somewhere in your code set background's zPosition to 1 before you add it to the scene

func addPlayer(gameScene: GameScene, xPos: CGFloat, yPos: CGFloat){
    player = SKSpriteNode(imageNamed: "player")

    //2. Set player's zPosition to be higher than background's zPosition
    player.zPosition = 2 
    player.size = CGSize(width: fieldsWidth, height: fieldsWidth)
    player.position = CGPoint(x: xPos, y: yPos)
    gameScene.addChild(player)
}

关于ignoresSiblingOrder ...我建议您将其留给true,因为它在性能方面可以提供很多帮助。唯一的""关于这种优化,你必须为可能重叠的同一zPosition的节点明确设置zPosition,但是你不想让它们以随机顺序重叠(忽略SibersOrder在设置为true),而是按确定的顺序重叠(由您控制​​)。这是来自docs:

  

当此属性设置为YES时,节点中的位置   确定渲染顺序时,将忽略树。渲染   同一z位置的节点顺序是任意的,可能会改变   每次渲染新帧时。

所以,只需明确设置zPosition即可。

答案 1 :(得分:0)

在场景的视图控制器中,设置$ cd alleles-fixation/ && python3 setup.py build