【问题标题】:Three Js How to copy Object direction that it's facing三个Js如何复制它所面对的对象方向
【发布时间】:2016-06-06 03:42:50
【问题描述】:

我目前正在为我的学校项目制作一个 3D 太空战斗机游戏,但是当我想根据我的飞船正面或它所面对的方向生成射弹时遇到了问题。

我确实找到了一种方法来根据我们所面对的方向在以下示例中使用矢量来生成弹丸 http://www.isaacsukin.com/news/2012/06/how-build-first-person-shooter-browser-threejs-and-webglhtml5-canvas

但我仍然不明白这个向量是如何工作的。谁能给我解释一下?

【问题讨论】:

  • 这里不是询问一般编程概念问题的地方。在 google 或 youtube 上搜索矢量或“游戏编程矢量”
  • 我有点做过,发现了这个,但我真的不明白向量是如何工作的。好吧,如果不能问它在这里,我会尝试搜索更多。

标签: javascript three.js


【解决方案1】:

我知道这更像是一个线性代数问题而不是编程问题。首先你要充分了解Vector是什么,什么不是。

通常错误是,Vector 是 3D 空间 (x,y,z) 中的某个坐标。这不是真的,这种想法不会让人理解,如何正确使用空间中的向量,让你问这样的问题。

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

如果只需要复制对象旋转,可以使用obj2.rotation.set(obj1.rotation.x,obj1.rotation.y,obj1.rotation.z) 如果你想把一些东西放在面向的空间对象上,你可以使用对象作为父对象:

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 是您的场景中在对象之前的关于对象方向的数字。

【讨论】:

  • (1) 使用obj2.rotation.copy( obj1.rotation ); (2) obj1.add( my_vect ); -- 您不能将Vector3 添加为对象的子对象。
  • (1) 是的,我想展示 vectorYXZ 的用法。 (2) 我没有意识到,我编辑了答案
猜你喜欢
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-08-17
  • 2012-05-27
  • 1970-01-01
  • 2015-11-12
  • 2011-03-05
  • 1970-01-01
相关资源
最近更新 更多