我目前正在为我的学校项目制作一个3D太空战斗机游戏,但是当我想根据我的船前面或它面向的方向产生一个射弹时遇到问题。
我确实找到了一种方法,可以根据我们在下面的例子中使用矢量面向的方向来生成射弹 http://www.isaacsukin.com/news/2012/06/how-build-first-person-shooter-browser-threejs-and-webglhtml5-canvas
但我仍然不知道这个载体是如何工作的。有人可以向我解释一下吗?
答案 0 :(得分:0)
我知道它比编程更像是线性代数问题。首先,你必须完全理解Vector
是什么,什么不是。
错误通常是Vector
是3D空间(x,y,z)中的某个坐标。这不是真的,这种想法不允许理解,如何正确地处理太空中的向量,让你问这样的问题。
https://www.khanacademy.org/math/linear-algebra/vectors-and-spaces
如果只需要复制对象旋转,则可以使用obj2.rotation.set(obj1.rotation.x,obj1.rotation.y,obj1.rotation.z)
如果你想把东西放到面对的空间物体上,你可以使用object作为父对象:
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
实际上my_vect.position.x,my_vect.position.y,my_vect.position.z是对象在面向对象之前的场景中的数字。