我基本上试图编码"在球杯下面找到球"练习游戏。
所以有3个杯子,还有一个可以找到的目标。全部使用SKSpriteNode
。目标是随机的一个孩子,当父母围绕SKNode
旋转时跟随旋转。
在每个游戏之间,程序应该通过简单地设置动画然后向下来显示目标的位置。这里是序列代码:
//THE ANIMATIONS
SKAction *moveUp = [SKAction moveByX:0.0 y:100 duration:1];
SKAction *moveDown = [SKAction moveByX:0.0 y:-100 duration:1];
SKAction *wait = [SKAction waitForDuration:0.5];
_presentTargetSequence = [SKAction sequence:@[moveUp,wait,moveDown]];
使用它的方法:
- (void) presentTarget
{
NSLog(@"presentTarget()");
[_target runAction:_presentTargetSequence completion:^{
_canMove = YES;
}];
}
代码工作正常,但只是第一次,之后调用该方法但从未经过[_target runAction ...]
。
但是如果目标确实进入了旋转/交换,它就能正常工作。
所以我的问题是:是否有任何可以使节点忽略它的运行方法?正如我所说,NSLog(@"presentTarget()")
被称为,但没有反应。
答案 0 :(得分:0)
我发现每次我对一个没有运行的动作感到困惑时,都会因为运行动作的对象当前不在场景的节点层次结构中。这没有错误,它只是没有运行动作。因此请仔细检查以确保在您要求其运行操作时将对象添加到当前场景。