无论如何,我可以为子节点设置动画,而不依赖于它的父节点吗?
例如
//create parent node
SKNode* parent = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(100,100)];
[myScene addChild:parent];
//create child node (add to parent)
SKNode* child = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(50,50)];
child.position = CGPointMake(0,0);
[parent addChild:child];
//attempt to run action on child
[child runAction:[SKAction moveByX:25 y:25 duration:1.0f]];
什么都没发生。但是,如果我在父级上运行相同的操作,它将按预期工作。
如何在独立于父节点的子节点上运行操作?这必须是可能的(例如,翅膀拍打鸟,轮胎打开汽车,起落架部署在飞机上等)。
如果这是sprite kit的限制,你能推荐另一个没有这些限制的游戏引擎框架吗?
我能够重新定位节点的唯一方法是将其直接添加到场景中。子节点无法重新定位。这是该框架中的一个巨大限制。非常令人失望。
更新:
我发现如果我删除物理体(child.physicsBody = nil)我可以改变位置(child.position = newPosition)但我不能运行改变位置的动作([child runAction:[SKAction moveByX: 25 y:25持续时间:1.0f])。
谢谢!
答案 0 :(得分:0)
解决方案:
如果我在将父节点添加到父节点之前对子节点运行任何操作,我随后可以运行更改子节点位置的操作。
例如:
[child runAction:[SKAction waitForDuration:0.0]];
[parent addChild:child];
//some time later...
[child runAction:[SKAction moveByX:25 y:25 duration:1.0f]];
我不知道为什么会这样,但确实如此。如果我没有在子节点上运行操作,然后再将其添加到父节点,则尝试移动节点的后续操作不起作用。