我正在编写一个小型空间游戏,但我坚持在开放的 2D 空间中以一种很好的方式将我的船从 A 点移动到 B 点。
我对以下解决方案的第一个问题是我的船永远不会完全停下来。它接近了,但它一直在 B 点周围振动。我的第二个问题是,如果我在它靠近时将它捕捉到 B,突然停止看起来也很假而且很糟糕。
我想我希望船在它正好停在 B 点之前加速、行驶和减速,没有任何反弹,但我不知道如何以一种好的方式实现这一点。此外,如果有一些“正确”的方法可以在 2D 空间中将一艘船从 A 点移动到 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 的直线路径,但这不应该影响我认为的问题。
任何帮助将不胜感激!