【问题标题】:SKAction is not running after another actionSKAction 在另一个动作之后没有运行
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2017-05-14
    相关资源
    最近更新 更多