我正在写一个小型太空游戏,但我仍然坚持在开放式2D空间中从A点移动到B点。
下面解决方案的第一个问题是我的船永远不会完全停下来。它接近,但它永远在B点周围振动。 我的第二个问题是,如果我在接近B时将其捕捉到B,突然停止看起来也是假的和坏的。
我想我希望这艘船加速,行驶并在它完全停在B点之前减速而没有任何弹跳,但我不知道如何以一种好的方式完成它。此外,如果有一些“正确”的方式将船舶从A点移动到2D空间中的B点,我还没有考虑过,其他想法非常受欢迎。
if(player.x < destination.x) {
if(player.velocityX < player.speed) {
player.velocityX += 10;
}
} else {
if(player.velocityX > -player.speed) {
player.velocityX -= 10;
}
}
if(player.y < destination.y) {
if(player.velocityY < player.speed) {
player.velocityY += 10;
}
} else {
if(player.velocityY > -player.speed) {
player.velocityY -= 10;
}
}
// Friction.
player.velocityX *= 0.9;
player.velocityY *= 0.9;
player.x += player.velocityX;
player.y += player.velocityY;
请注意,此解决方案不会对从A到B的直线路径使用三角函数,但这不应影响我认为的问题。
非常感谢任何帮助!
答案 0 :(得分:0)
我最终找到了一个解决方案,一旦玩家通过了目标点,我就会增加Friction
,使得船最终减速到0而不会卡入点B
。