我正在製作一個簡單的遊戲,它將有一艘太空飛船被屏幕中心的星星引力吸引。我迄今爲止的代碼以一種並不平滑的方式移動矩形(很快成爲火箭)。矩形在到達恆星時也不會停止,而是在返回之前保持超越恆星。Java中的行星萬有引力
這裏是我的代碼:
public void move() {
// Deals with gravity towards the center star
if (x > game.getWidth()/2) {
xVel -= xa;
}
if (x < game.getWidth()/2) {
xVel += xa;
}
if (y > game.getHeight()/2) {
yVel -= ya;
}
if (y < game.getHeight()/2) {
yVel += ya;
}
x += xVel;
y += yVel;
}
我通過計算在火箭位於相對於中心的屏幕上開始,然後改變其加速度值Xa和Ya,根據需要。然後將加速度值添加到Velocity變量xVel和yVel。
感謝您的信息...你的問題是? – pczeus
除非添加*碰撞檢測*,否則受重力吸引的任何物體將繼續移動經過重心,然後再從現在位於物體後面的重力的拉力中減速。這就是重力如何工作。 – Andreas