Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 三个JS如何检测一个对象是否面向选定点_Javascript_Three.js - Fatal编程技术网

Javascript 三个JS如何检测一个对象是否面向选定点

Javascript 三个JS如何检测一个对象是否面向选定点,javascript,three.js,Javascript,Three.js,所以我对三个JS非常陌生,我已经尝试了几个小时来解决这个问题,但是我如何确定网格是否面对一个选定的点呢?基本上我有一个RTS风格的游戏,你可以选择一个角色,然后选择他移动到哪里。目前,你可以选择角色,你可以选择你想要它在地图上移动到的位置,它将开始行走,但是我不知道如何确定它是否朝向正确的方向。我不想使用lookAt,因为我希望网格在向前移动时旋转,而不是瞬间执行任何操作 想法?一个简单的解决方案是选择任意的外观向量 var lookVector = new THREE.Vector3(0,0,

所以我对三个JS非常陌生,我已经尝试了几个小时来解决这个问题,但是我如何确定网格是否面对一个选定的点呢?基本上我有一个RTS风格的游戏,你可以选择一个角色,然后选择他移动到哪里。目前,你可以选择角色,你可以选择你想要它在地图上移动到的位置,它将开始行走,但是我不知道如何确定它是否朝向正确的方向。我不想使用lookAt,因为我希望网格在向前移动时旋转,而不是瞬间执行任何操作


想法?

一个简单的解决方案是选择任意的外观向量

var lookVector = new THREE.Vector3(0,0,1);
当您需要执行一些检查变换时,请使用网格矩阵创建该向量的副本(确保矩阵已更新,如果您执行了任何几何变换,请在几何变换中计数)

然后计算到你感兴趣点的角度

var vectorToPOI =  POI.sub(origin);
var angle = lookVectorAtThisTime.angleTo(vectorToPOI);
if(angle < minAngle)
{
  //looking at the point
}
var-vectorToPOI=POI.sub(原点);
变量角度=LookVectorAtHistTime.angleTo(vectorToPOI);
如果(角度<米角)
{
//看问题
}
您也可以直接从几何体计算外观向量,或者以其他方式计算原点向量,而不是对象的中心,但这应该会使您走上正确的道路

var vectorToPOI =  POI.sub(origin);
var angle = lookVectorAtThisTime.angleTo(vectorToPOI);
if(angle < minAngle)
{
  //looking at the point
}