將重力應用於物理世界非常簡單,您只需創建一個Vector2
並設置其水平和垂直重力值。如果我想創建一個零重力的自上而下的2D遊戲,只將重力應用於特定的物體,就像箭頭的拋射體運動一樣。當然,如果你的世界首先具有重力,那麼很容易有彈丸運動。如何在特定物體上應用重力
float GRAVITY_EARTH = -9.8f;
Vector2 gravity = new Vector2(0, GRAVITY_EARTH);
World world = new World(gravity, true);
的Box2D體類有取消或反向重力的方法,但是我不想用的時候,就像在下面的代碼示例。
body.setGravityScale(0); // set 0 to cancel the gravity, and set -1 to reverse the gravity
但我想成爲多才多藝,我只想將重力應用於特定的身體。例如,我使用方法setLinearVelocity
將主體移動到特定目標。現在,如果世界的重力γ爲-9.8f,它將自動產生拋射體運動。
Vector2 initialVelocity = targetPoint.sub(originPoint).nor();
initialVelocity.scl(speed); // to apply constant speed
body.setLinearVelocity(initialVelocity);
我試着將y的初始速度遞增到-9.8以應用重力。但它沒有工作,我錯過了什麼?
initialVelocity.y += -9.8f;
body.setLinearVelocity(initialVelocity);
// or
body.applyForce(initialVelocity, body.getWorldCenter(), true);