0

我基本上是在尝试编写一个“在杯子下找球”游戏进行练习。所以有 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()")就像我说的那样被调用,但不是反应。

4

1 回答 1

0

我发现每次我对未运行的动作感到困惑时,这是因为运行该动作的对象当前不在场景的节点层次结构中。这没有错误,它只是不运行该操作。因此,请仔细检查以确保在您要求对象运行动作时将其添加到当前场景中。

于 2014-06-11T02:39:13.457 回答