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

时间:2015-12-01 04:21:09

标签: javascript three.js

所以我对THREE很新,我现在已经尝试了几个小时,但是如何确定网格是否面向选定的点?基本上我所拥有的是一种RTS风格的游戏,您可以在其中选择一个角色并选择他移动到的位置。目前你可以选择角色,你可以选择你想要它移动到地图上的位置,它会开始走路,但我无法弄清楚如何确定它是否面向正确的方向。我不想使用lookAt,因为我希望网格在向前移动时转动,而不是立即做任何事情。

想法?

1 个答案:

答案 0 :(得分:0)

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

var lookVector = new THREE.Vector3(0,0,1);

当你需要做一些检查时,用网格矩阵变换这个向量的副本(确保矩阵更新并在几何变换中计算,如果你做的话)

var direction = lookVector.clone().applyMatrix4(mesh.matrix);
var origin = mesh.boundingSphere.center;
var lookVectorAtThisTime = direction.sub(origin);

然后计算与您感兴趣点的角度

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

您也可以直接从几何图形或其他方式计算您的外观矢量,原始矢量可以是除了对象中心之外的东西,但这应该让您走在正确的路径上。