2016-03-30 4 views
0

私は銃の銃身から銃を撃つ単純なゲームを作りようとしています。これまでは、キューブと円筒がバレルとして追加された単純なグループがあります。グループを(一度に90度ずつ)回転させると、バレルは異なる方向に面して動いています。three.jsを使用して、どのメッシュが向いているプレーンを決定するのですか?

私の問題は、私の人生は私の銃の銃がどの方向を指しているかを決める方法を見つけることができないということです。私は、バレルが取り付けられている立方体の面と、それが直面している3D世界のどの部分を特定するかを知る必要があります.X +、Y +、Z +、X-、Y-、Z-のいずれかです。私のレキシコンがこれを説明するのにすべて間違っているなら、私を許してください。彼らは全く働いていないので、私は何の試みも投稿していない。

私はSO W/Oその上でこれを投稿することができないという理由だけでいくつかのコードを、私は...

をやろうとしているものの例については、このCodePenを見てみましょう...と、ここにいてください。 。

var geometry = new THREE.BoxGeometry(50, 50, 50); 
var material = new THREE.MeshNormalMaterial(); 
var cube = new THREE.Mesh(geometry, material); 
    var cylgeo = new THREE.CylinderGeometry(10, 5, 100, 32); 
     var cylmesh = new THREE.Mesh(cylgeo, material); 

     cylmesh.rotateZ(Math.PI/2); 
     cylmesh.translateY(35); 


var group = new THREE.Group(); 

group.add(cube); 
group.add(cylmesh); 

scene.add(group); 

答えて

0

第1バレルは、デフォルトでは、そのようなあなたのコードを変更することで、正のz軸を指すように、あなたの「銃」を構築:

cylmesh.rotateX(Math.PI/2); 

はので、あなたのシーンにヘルパー軸を追加します。親groupが回転ゼロを有する場合には、銃の銃身が正-z軸を指し、この構成では

scene.add(new THREE.AxisHelper(100)); 

:あなたは、あなたが何をしているかを見ることができます。

group、あなたは方向が基(ひいてはバレル)がそうように回転探して取得することができるされている場合:

var vector = new THREE.Vector3(); // create once an reuse 
... 
group.getWorldDirection(vector); 

vectorの戻り値は、単位長さのベクトルポインティングなりバレルと同じ方向。

three.js r.75

+0

ありがとうございます!あなたがコードの多くの恐ろしい行を見たなら、私はこれを試してやろうと思いました。あなたは良い笑いを持っています。 – smatthews1999

関連する問題