我使用光线投射方法检测轨道两侧的不同彩色条带,并通过计算距离将我的汽车物体保持在适当位置。但问题是射线始终指向全局坐标系中的恒定方向,并且不随着汽车对象的移动(旋转)而变化。如果光线方向在汽车的参考系中我可能无法弄清楚该怎么办。目前我在做这个
var ray = new THREE.RayCaster(car.position,new THREE.Vector3(-1,0,0),0,50);
汽车的移动位于X-Z平面
有人可以指出解决方案吗?
答案 0 :(得分:1)
您的光线投射正在世界空间中完成,因此您需要正确的世界空间矢量。
我假设汽车是场景的孩子,而不是其他旋转物体。
要构建一个指向汽车在世界坐标系中前进方向的单位矢量,首先构建一个单位矢量,指向汽车在其局部坐标系中前进的方向 - 无论发生在哪里你的情况:
var vector = new THREE.Vector3( -1, 0, 0 );
然后将相同的旋转应用于应用于汽车的矢量。
vector.applyQuaternion( car.quaternion );
编辑:更新为three.js r.66