【发布时间】:2014-04-30 23:03:15
【问题描述】:
我基本上是在尝试编写一个“在杯子下找球”游戏来练习。
所以有 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()") 像我说的那样被调用,但不是反应。
【问题讨论】:
-
如何切换_target?每当动作不运行时,它可能是 nil 吗?设置断点,调试。
-
_target 是运行游戏的类的属性,初始化后永远不会为 nil。
标签: ios sprite-kit skspritenode skaction sknode