【问题标题】:How to set horizontal back and forth movements on a sprite?如何在精灵上设置水平来回运动?
【发布时间】:2014-01-02 16:06:33
【问题描述】:

我正在编写一个游戏,我正在生成一些在同一水平面上移动的精灵,即它们的 y 坐标始终相同。我不确定物理学,而只是 SKActions。 最初我写这个是为了在位置 Y 生成精灵,然后以随机选择的方向移动到屏幕外的一个点。现在,我希望这个精灵转身并向后走,直到它碰到屏幕的另一端,我希望它再次转身,等等。

最初我将操作设置为:

SKAction * actionMove = [SKAction moveTo:destination duration:duration];

目的地和持续时间基本上是随机生成的。这显然只在一个方向上移动精灵。

有什么优雅的方法可以让精灵变成一个永无止境的循环,一遍又一遍地重复它们的路径?

【问题讨论】:

    标签: objective-c action xcode5 sprite-kit skaction


    【解决方案1】:

    我想出了如何使用动作序列来做到这一点。我最初尝试在
    更新

    场景的方法,这使得一切都非常缓慢,正如预期的那样。所以我设置了以下动作序列(我让精灵在同一个 y 坐标上来回移动,所以他们只需要转身继续他们的旅程)

    CGPoint destination1, destination2;
    if (sprite.direction == LeftDirection)
    {
        destination1 =CGPointMake(-sprite.size.width/2, sprite.position.y);
        destination2 = CGPointMake(self.frame.size.width + sprite.size.width/2, sprite.position.y);
    
    }else {
        destination1 =CGPointMake(self.frame.size.width + sprite.size.width/2
                                 , sprite.position.y);
        destination2 = CGPointMake(-sprite.size.width/2, sprite.position.y);
    }
    
    int duration = [sprite getDuration]; //this generates a random duration amount
    // Create the actions
    SKAction * actionMove1 = [SKAction moveTo:destination1 duration:duration];
    
    //turn the sprite around
    SKAction * rotateAction = [SKAction runBlock:^{
        sprite.xScale = sprite.xScale * -1;
        sprite.direction = (sprite.direction == LeftDirection) ? RightDirection : LeftDirection;
    }];
    //reverse the movement
    SKAction * actionMove2 = [SKAction moveTo:destination2 duration:duration];
    
    SKAction * actionMove = [SKAction sequence:@[actionMove1, rotateAction, actionMove2, rotateAction]];
    
    SKAction * repeat = [SKAction repeatActionForever:actionMove];
    

    创建后,我们在精灵上运行repeat 动作。瞧!改变方向的连续运动。

    【讨论】:

      猜你喜欢
      • 2012-08-02
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多