背景:我有一个鸟瞰的 JavaScript 游戏,玩家通过触摸一个圆圈来控制宇宙飞船——例如触摸圆圈中心的左侧,飞船会向左移动,触摸右上角它会移动到顶部以此类推……离伪摇杆的圆心越远,那个方向的速度越快。但是,我不是直接调整船的速度,而是设置一个 targetSpeed.x 和 targetSpeed.y 值,然后船将使用以下方式调整其速度:
if (this.speed.x < this.targetSpeed.x) {
this.speed.x += this.speedStep;
}
else if (this.speed.x > this.targetSpeed.x) {
this.speed.x -= this.speedStep;
}
...对于 y 速度也是如此,speedStep 是一个较小的值,可以使其更平滑且不会太突然(船只不应从快速向左的方向行驶到立即快速的向右方向)。
我的问题:使用上面的代码,我相信速度会在对角线方向上调整得更快,而在水平/垂直线方向上调整得更慢。如何纠正此问题以具有相同的目标速度跟随?
非常感谢您的帮助!