我试图使用RayCaster类来检测粒子何时与网格碰撞。我通过在粒子的运动方向上投射光线来做到这一点,并且如果光线照射到网格上,并且到网格的距离小于粒子在当前帧中行进的距离,则检测到碰撞。 / p>
示例代码:
var whereAmI = particle.position;
var whereWasI = particle.previous;
var diff = new THREE.Vector3();
diff.subVectors(whereAmI,whereWasI);
var directionOfMotion = diff.clone().normalize();
var ray = new THREE.Raycaster( whereWasI, directionOfMotion );
var collisionResults = ray.intersectObjects( collidableMeshList );
if(collisionResults[0].distance < diff.length()){
whereAmI.copy(whereWasI);
}
如果粒子在网格之外,它可以正常工作。但是,当粒子在网格中时,我遇到了问题。我想要检测这些事件的一种方法是使网格双面,并从粒子投射光线,看它是否击中网格的内部。所以我的问题是:使用RayCaster投射光线时,有没有办法确定它是否会撞击网格内部?
谢谢, Aatish