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