使用多个SKSpriteNodes初始化SKNode

时间:2014-12-03 00:28:19

标签: ios swift sprite-kit

我正在建造一个角色有健康棒的游戏。我做了一些快速的研究,发现子类化SKNode并分别为角色和健康栏添加SKSpriteNode成员是一个很好的方法。所以目前我有这个:

class GameCharacter: SKNode {

 let characterBody = SKSpriteNode()
 let characterHealthBar = SKSpriteNode()

}

然而,我不知道如何初始化这个以便两个精灵节点出现。实际上我想要的是顶部的角色身体和它下面的健康栏。

我知道这是SKSpriteNode使用大小和纹理初始化的init方法:

override init() {
 let texture = SKTexture(imageNamed: "CharacterStanding.png")
 super.init(texture: texture, color: UIColor.clearColor(), size: texture.size())
}

SKNode是否有类似的init方法?或者是否足以在SKNode中初始化两个SKSpriteNodes,然后在游戏场景中创建一个新的GameCharacter对象?

或者我猜我想问的是什么;如何启动此GameCharacter(SKNode)对象并显示角色和健康栏?

2 个答案:

答案 0 :(得分:1)

这是迄今为止我找到的解决方案:

在init方法中

只需执行以下操作:

override init() {
 super.init()
 self.addChild(characterBody)
 characterHealthBar.position = 
     CGPoint(x: characterBody.position.x, y: characterBody.position.y - 45)
 self.addChild(characterHealthBar)
}

这将启动带有角色和他/她下方健康栏的节点

答案 1 :(得分:1)

如果您在sprite工具包中遇到z-index问题,通常是由系统使用ignoresSiblingOrder = true进行的优化引起的,您可以在每个节点中手动处理这个定义zPosition。

有关Drawing Order for a Node Tree

的更多信息