Three.JS lookat

时间:2017-02-26 14:13:15

标签: javascript three.js collision-detection

我有一个寻找另一个对象的对象。但是当我进行碰撞检测时。他没有看到我对LookAt的旋转愿望。但是他使用了他的默认轮换。为什么他没有使用LookAt的旋转愿望?

这是问题所在:

enter image description here

蓝色的是默认值。绿色的那个显示带有LookAt的蓝色。

为什么LookAt不影响碰撞检测?

我的碰撞检测:(我制作RTS游戏,这就是为什么我只使用X和Z)

function collisionXZ(o1, o2) {
    if (Math.abs(o1.position.x - o2.position.x) > (o1.geometry.parameters.width + o2.geometry.parameters.width) / 2)
        return false;
    if (Math.abs(o1.position.z - o2.position.z) > (o1.geometry.parameters.depth + o2.geometry.parameters.depth) / 2)
        return false;
    return true;
}

1 个答案:

答案 0 :(得分:1)

THREE.Object3D.lookAt()更改了对象的rotation,而不是position

因此,如果您想测试这两个矩形是否发生碰撞,则必须考虑rotation

您的函数看起来像AABB test,它(在大多数情况下)仅在碰撞检测系统的广泛阶段期间使用。基本上,此测试的目的是检测可能碰撞的对象,以避免不必要的贪婪碰撞测试,但它本身不是真正的碰撞测试

我认为你最好使用一个用于碰撞检测的库来提供原始测试(Rectangle over Rectangle,Rectangle over Circle,...)