如何做停止运动条件



我使用正弦和余弦移动一个字符。

player.x += Math.cos(angle) * speed;
player.y += Math.sin(angle) * speed;

当前停止条件为 distance < n 。但是,如果速度太高,有时角色不会停止并永远继续前进。让它停在正确位置的最佳方法是什么?

PS:它随着鼠标点击而移动。我点击,玩家直接移动到点击点。

一种快速的解决方法是检查当前distance是否比前一个(上一个动画帧中的短(。这意味着角色正在接近目标。如果它没有接近它(当前距离实际上高于前一个距离(,则意味着它已经通过了它,因此必须停止。

在伪代码中:

if distance < n or lastDistance<distance then
    stop;
lastDistance = distance;

停止后,您应该将角色定位在目标位置(否则,它将在过冲位置保持静止(。

编辑:如果您不介意字符在达到目标之前停止一点,您可以尝试使用取决于当前speed的值 n 。这样,如果角色走得很快,当它进入更大的区域时,它会停止。

最新更新