Cannon.js で、物理ティックごとにプレイヤーの体に力を加えることで、「惑星の重力」の力を作ることができます。力は惑星の中心に向けられるべきです。また、物理世界がすべてのステップに適用する重力をキャンセルする必要があります。
これは主に、重力を実装するためにコードに追加したものです。プレーヤー メッシュmakePlayer
の代わりに を返すように、関数も変更したことに注意してください。CANNON.Body
また、わかりやすくするために、ワールドの重力を Y 方向に正確に -10 に設定しました。
// Listen for physics ticks
playerBody.world.addEventListener('postStep', function () {
// Direction towards (0,0,0)
playerBody.force.set(
-playerBody.position.x,
-playerBody.position.y,
-playerBody.position.z
).normalize();
// Set magnitude to 10
playerBody.force.scale(10, playerBody.force);
// Cancel gravity force from the world
playerBody.force.y += 10;
});
更新された遊び場のシーンは次のとおりです:
http://www.babylonjs-playground.com/#DETZ7#4