【问题标题】:Moving node with Sprite Kit使用 Sprite Kit 移动节点
【发布时间】:2014-03-14 15:50:53
【问题描述】:

我想同时运行两个动作。我想同时以 X 方式和 Y 方式移动对象。我正在尝试运行这样的操作:

    sprite.position = CGPointMake(300, 300);
    SKAction *action3 = [SKAction moveTo:CGPointMake(sprite.position.x,100) duration:0.5];
    SKAction *action2 = [SKAction moveTo:CGPointMake(50,300) duration:1];
    SKAction *group = [SKAction group:@[action2,action3]];
    [sprite runAction:group];

但是这是先做action3,然后做action2。我想要做的是对象(节点)在 Y 坐标上上下移动,同时节点必须在 X 坐标上移动。

【问题讨论】:

  • Action3 : 你设置它自己的“x”,所以它只会在“y”轴上移动。
  • 我现在明白了。但我不知道我将如何独立移动。我想每 1 秒向下和向上移动 y 坐标的动作节点......以及在 Y 上移动节点的动作我想在 5 秒内从一个点移动到另一个点。

标签: objective-c sprite-kit


【解决方案1】:

如果我理解正确的话,听起来你基本上是想让它垂直弹跳并在 X 方向移动。

如果是这样,这应该可以:

SKAction *up      = [SKAction moveByX:0 y: 100 duration:1];
SKAction *down    = [SKAction moveByX:0 y:-100 duration:1];
SKAction *action1 = [SKAction repeatActionForever:[SKAction sequence:@[up, down]]];

SKAction *action2 = [SKAction moveByX:200 y:0 duration:5];

SKAction *group = [SKAction group:@[action1, action2]];

【讨论】:

  • 不错!像我想要的那样工作!
【解决方案2】:
SKAction *action3 = [SKAction moveTo:CGPointMake(sprite.position.x,100)  duration:1];
SKAction *action2 = [SKAction moveTo:CGPointMake(50, 300) duration:1];

问题是您不能同时运行两个移动动作。一个会覆盖另一个的行为,因此实际上只有一个动作的结果会显示在屏幕上。

你必须问自己你的目标是什么,精灵应该如何移动?假设您想将 X 轴上的精灵移动到点 50(因为其他动作保持 X 坐标不变)但是它应该在 Y 轴上的哪个位置移动,100 还是 300?精灵不能同时做这两件事。

如果您想要更复杂的移动行为,例如水平移动时连续向上/向下移动,则必须独立使用 moveToX: 和 moveToY: 并以不同的方式计时。例如:

SKAction *moveLeft = [SKAction moveToX:50 duration:4];
SKAction *moveUp = [SKAction moveToY:300 duration:2];
SKAction *moveDown = [SKAction moveToY:100 duration:2];

[sprite runAction:moveLeft];
[sprite runAction:[SKAction sequence:@[moveUp, moveDown]]];

精灵向左移动需要 4 秒,向上移动到 200 需要 2 秒,向下移动到 100 需要 2 秒。最后它将到达 50,100。

顺便说一句,使用组操作相当于简单地调用 runAction: 为组中的每个操作调用一次。

【讨论】:

  • 感谢您的精彩回答 :) @LearnCocos2D
【解决方案3】:

使用group: 方法,而不是sequence:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多