3

ポイント[0,0,0]でBabylon.jsで球を作成しました。それは、それ自体の重力を持つ惑星のようにしたいです。

次に、球体(プレイヤーになる)を大きな球体(「惑星」)の中心に引き付けたいと思います。

これが私が作ったデモです。 http://www.babylonjs-playground.com/#DETZ7#1

私が考えることができる唯一の解決策は、重力値を動的に更新することですが、この状況でそれが最善の方法であるかどうかはわかりません。もっと良い方法を知っているなら、教えてください。私は今日それを学び始めました。

前もって感謝します。

4

1 に答える 1

3

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

于 2016-01-31T18:34:17.813 に答える