我正在建造一个角色有健康棒的游戏。我做了一些快速的研究,发现子类化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)对象并显示角色和健康栏?
答案 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。