Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用多个SKSPRITENODE初始化SKNode_Ios_Swift_Sprite Kit - Fatal编程技术网

Ios 使用多个SKSPRITENODE初始化SKNode

Ios 使用多个SKSPRITENODE初始化SKNode,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我正在制作一个游戏,其中角色有健康栏。我做了一些快速的研究,发现子类化一个SKNode并分别为角色和健康栏添加SKSpriteNode成员是一个很好的方法。所以现在我有这个, class GameCharacter: SKNode { let characterBody = SKSpriteNode() let characterHealthBar = SKSpriteNode() } 但是,我不知道如何初始化它,以便两个精灵节点都出现。实际上,我想要的是上面的角色身体和下面的健康栏

我正在制作一个游戏,其中角色有健康栏。我做了一些快速的研究,发现子类化一个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中初始化两个skspritenode,然后在游戏场景中创建一个新的GameCharacter对象就足够了吗


或者我猜我想问的是;如何初始化此GameCharacter(SKNode)对象并同时显示角色和健康栏?

到目前为止,我找到了一个解决方案:

在init方法中,只需执行以下操作:

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

这将使用角色和他/她的下方的健康栏初始化节点

如果您在sprite kit中遇到z索引问题,通常是由于系统使用
ignoresSiblingOrder=true
进行优化造成的,您可以在每个节点中手动处理此定义的z位置

更多关于