Sprite在接近触摸点时正在减速

时间:2014-03-12 19:43:22

标签: sprite-kit

我正在使用SpriteKit,当我的精灵接近触摸点时,我的精灵正在减速。

我希望精灵在从初始点移动到屏幕上的触摸点时保持固定的速度。

目前,我的持续时间设置为3.0

在touchesEnded事件中,我收集新的触摸点并将值保存到属性。

在场景更新事件中,我执行

float realMoveDuration = 3.0;
SKAction *actionMove = [SKAction moveTo:self.newPoint duration:realMoveDuration];
[self.player runAction:[SKAction sequence:@[actionMove]]];

因此,当玩家精灵开始接近触摸点时,移动速度变慢,并逐渐到达触摸点。

这不是我正在寻找的动作,我希望玩家精灵以恒定的行进速度继续前进到触摸点。

2 个答案:

答案 0 :(得分:2)

你应该在touchesEnded活动中运行你的SKAction。

如果您在更新活动中拥有该代码,则每秒开始新的SKAction 60次。当目的地发生变化时,您只需要运行新的SKAction。

如果在到达原始目标之前目标位置发生了更改,则应从该节点中删除该操作,然后添加新操作。

此外,不确定您正在做什么的细节,但对象移动的速度取决于您指定它到达那里的距离和时间。因此,如果您希望节点以一致的速度移动,无论距离如何,您都需要进行计算以确定为SKAction设置的正确持续时间。

例如,如果速度代表每秒像素/单位,您可以执行此操作来计算持续时间:

duration = distance / speed;

答案 1 :(得分:0)

如果您使用SKAction移动精灵,请使用timingMode属性。默认值为SKActionTimingLinear。因此,如果您没有改变它,节点应该以恒定速度移动。

这是指向可用Action Timing Modes的链接。