在2D空间中将点从A移动到B.

时间:2013-10-14 18:51:31

标签: javascript game-physics gravity

我正在写一个小型太空游戏,但我仍然坚持在开放式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的直线路径使用三角函数,但这不应影响我认为的问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我最终找到了一个解决方案,一旦玩家通过了目标点,我就会增加Friction,使得船最终减速到0而不会卡入点B