【问题标题】:How to create an autoreversing animation that loops forever in Sprite Kit?如何在 Sprite Kit 中创建一个永远循环的自动反转动画?
【发布时间】:2013-12-22 21:08:19
【问题描述】:

我正在尝试做一个简单的自动反转动画。

SKAction *a = [SKAction moveToX:10 duration:0.5];
a = [SKAction repeatActionForever:a];
[car runAction:a];

但动作并没有逆转。如何获得类似 Core Animation 的自动反转效果?

【问题讨论】:

    标签: ios iphone sprite-kit skaction


    【解决方案1】:

    Andrey Gordeev 的回答足够接近,

    float x = car.position.x;
    SKAction *a = [SKAction moveToX:(x+10) duration:0.5];
    SKAction *b = [SKAction moveToX:x duration:0.5];
    SKAction *seq = [SKAction sequence:@[a,b]];
    [car runAction:[SKAction repeatActionForever:seq]];
    

    moveToX:(x+10) 将使其摆动 10(而不是在点 X=10 处移动)。

    【讨论】:

    • 谢谢!我一直在寻找这个答案很长时间。这将帮助我处理我需要的许多其他东西
    【解决方案2】:

    手动添加反向操作:

    float x = car.position.x;
    SKAction *a = [SKAction moveToX:10 duration:0.5];
    SKAction *b = [SKAction moveToX:x duration:0.5];
    SKAction *sequence = [SKAction sequence:@[a,b]];
    [car runAction:[SKAction repeatActionForever:sequence]];
    

    【讨论】:

      【解决方案3】:

      repeatActionForever:方法会反转动作。

      问题在于 moveToX: 操作不可逆

      每个动作的 Apple 文档都会显示它是否可逆。

      PS:moveByX:y:duration: 动作是可逆的

      【讨论】:

      • 你能举个例子,你将如何创建一个自动反转、循环动画吗? SKAction *a = [SKAction moveByX:0 y:10 duration:2.5]; a = [SKAction repeatActionForever:a.reversedAction];只是永远增加10。没有倒车(上下)。我也试过 SKAction *a = [SKAction moveByX:5 y:10 duration:2.5]; a = [SKAction repeatActionForever:a.reversedAction];这只会反转方向。但没有自动反转。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多