2016-06-05 4 views
0

Ich mache gerade ein 3D-Raum-Kämpfer-Spiel für mein Schulprojekt, aber ich stoße auf ein Problem, wenn ich ein Projektil nach meinem Schiff Vorderseite oder Richtung zeigen will .Drei Js So kopieren Sie Objektrichtung, die es zugewandt ist

finde ich einen Weg Projektil nach Richtung zum Laichen wir stehen im folgende Beispiel unter Verwendung von Vektor http://www.isaacsukin.com/news/2012/06/how-build-first-person-shooter-browser-threejs-and-webglhtml5-canvas

aber ich does'nt noch undestand wie diese Vektor Arbeit. Kann mir jemand erklären?

+0

Dies ist nicht der Ort, um Fragen zu allgemeinen Programmierkonzepten zu stellen. Suche Google oder Youtube für Vektoren oder vielleicht "Spiel Programmierung Vektoren" – 2pha

+0

Ich irgendwie tat, und fand dies, aber ich verstehe nicht wirklich, wie Vektoren funktioniert. Nun, wenn es nicht in Ordnung ist zu fragen, dass es hier ist, versuche ich nach mehr zu suchen. –

Antwort

0

Ich verstehe, es ist mehr eine Frage der linearen Algebra als Programmierung. Zuerst müssen Sie vollständig verstehen, was Vector ist und was nicht.

Oft Fehler ist, dass ein Vector ist eine Koordinate in 3D-Raum (x, y, z). Das ist nicht wahr und dieses Denken wird nicht erlauben, zu verstehen, wie man richtig mit Vektoren im Raum arbeitet und lassen Sie uns Fragen wie diese stellen.

https://www.khanacademy.org/math/linear-algebra/vectors-and-spaces

https://www.khanacademy.org/math/linear-algebra/vectors-and-spaces/vectors/v/vector-introduction-linear-algebra

Wenn Sie nur Objektrotation zu kopieren, können Sie obj2.rotation.set(obj1.rotation.x,obj1.rotation.y,obj1.rotation.z) verwenden Wenn Sie so etwas in den Raum Objekt zugewandt setzen möchten, können Sie Objekt als Eltern verwenden können:

var my_vect = new THREE.Object3D(); // create vector 
obj1.add(my_vect); // add to your object 
obj1.rotation.set(1,2,3); // rotate object 
my_vect.position.translateX(1); // move vector 1 unit before the object 
obj1.localToWorld(my_vect.position); // get global coords from local coords 

tatsächlich my_vect.position.x, my_vect.position.y, my_vect.position.z sind die Zahlen in Ihrer Szene vor dem Objekt, die die Objektorientierung berücksichtigen.

+0

(1) Verwenden Sie 'obj2.rotation.copy (obj1.rotation);' (2) 'obj1.add (my_vect);' - Sie können ein 'Vector3' nicht als Kind eines Objekts hinzufügen. – WestLangley

+0

(1) Ja, ich möchte die Verwendung von vectorYXZ zeigen. (2) ich realisierte nicht, ich redigierte Antwort – Martin