我正在使用SpriteKit,当我的精灵接近触摸点时,我的精灵正在减速。
我希望精灵在从初始点移动到屏幕上的触摸点时保持固定的速度。
目前,我的持续时间设置为3.0
在touchesEnded事件中,我收集新的触摸点并将值保存到属性。
在场景更新事件中,我执行
float realMoveDuration = 3.0;
SKAction *actionMove = [SKAction moveTo:self.newPoint duration:realMoveDuration];
[self.player runAction:[SKAction sequence:@[actionMove]]];
因此,当玩家精灵开始接近触摸点时,移动速度变慢,并逐渐到达触摸点。
这不是我正在寻找的动作,我希望玩家精灵以恒定的行进速度继续前进到触摸点。
答案 0 :(得分:2)
你应该在touchesEnded活动中运行你的SKAction。
如果您在更新活动中拥有该代码,则每秒开始新的SKAction 60次。当目的地发生变化时,您只需要运行新的SKAction。
如果在到达原始目标之前目标位置发生了更改,则应从该节点中删除该操作,然后添加新操作。
此外,不确定您正在做什么的细节,但对象移动的速度取决于您指定它到达那里的距离和时间。因此,如果您希望节点以一致的速度移动,无论距离如何,您都需要进行计算以确定为SKAction设置的正确持续时间。
例如,如果速度代表每秒像素/单位,您可以执行此操作来计算持续时间:
duration = distance / speed;
答案 1 :(得分:0)
如果您使用SKAction移动精灵,请使用timingMode
属性。默认值为SKActionTimingLinear
。因此,如果您没有改变它,节点应该以恒定速度移动。
这是指向可用Action Timing Modes的链接。