0

我使用光线投射方法来检测轨道两侧的不同颜色的条带,并通过计算距离来保持我的汽车物体在适当的位置。但问题是光线始终指向全局坐标系中的恒定方向,并且不会随着汽车物体的移动(旋转)而改变。如果光线方向在汽车的参考系中,我可能无法弄清楚该怎么做。目前我正在这样做

var ray = new THREE.RayCaster(car.position, new THREE.Vector3(-1,0,0),0,50);

汽车的运动在 XZ 平面内

有人可以指出解决方案吗?

4

1 回答 1

1

您的光线投射是在世界空间中完成的,因此您需要正确的世界空间矢量。

我假设汽车是场景的孩子,而不是其他旋转的物体。

要构造一个指向汽车在世界坐标系中前进方向的单位向量,首先构建一个指向汽车在其本地坐标系中前进方向的单位向量——无论您遇到什么情况:

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

然后对该向量应用与应用于汽车相同的旋转。

vector.applyQuaternion( car.quaternion );

编辑:更新到 three.js r.66

于 2013-05-10T14:04:22.987 回答