2017-01-16 10 views
0

他の同様の質問と同様、オブジェクトをその回転に基づいてthree.jsに移動したいと思います。違いは、object.translateZは使用できません。これは物理シミュレータを使用しているためです。そのようなオブジェクトを更新すると混乱します。ここに私の問題のfiddleの例がある。私のフィドルで遊んで、あなたの答えにあなたの更新版を加えてください。Three.jsオブジェクトをtranslateZなしで前方に移動

mesh.rotation.yに基づいてmesh.position.xmesh.position.zを更新することで、キューブを前進させたいと思います。

mesh.rotation.yを使用してアクセスすると、時々three.jsローテーションがちょっと変わったことに気づくことがあります。

ありがとうございます!

function animate() { 
     mesh.position.x += 0.1; 
     requestAnimationFrame(animate); 
     renderer.render(scene, camera); 
    } 

をこのコード例は増加します:次のように、単にあなたに行くためにあなたのメッシュが代わりにinit関数の()関数をアニメーション化したい位置の値を増加例をごメッシュを移動するには

答えて

2

メッシュを移動する方向を取得するには、mesh.getWorldDirection()を使用することをお勧めします。次に、スカラーで乗算して移動速度を調整することができます。

direction = mesh.getWorldDirection(); 

mesh.position.add(direction.multiplyScalar(moveSpeed)); 

フィドル:https://jsfiddle.net/k1swrxjr/1/

幸運!

+1

代わりにこれを行います: 'mesh.getWorldDirection(direction);'メソッドは、毎回新しい 'Vector3'をインスタンス化します。そうでなければ呼び出されます。 https://jsfiddle.net/k1swrxjr/6/の変更を参照してください。 – WestLangley

0

animate()が実行されるたびにメッシュのx位置を0.1回転させます。

+0

私は、オブジェクトが向きが向いている方向に移動するように頼んでいましたが、これは例のためランダムにしました –

関連する問題