SphereCollider去碰撞MeshCollider时,代码实现如下:
var meshCollider=other;
if (Collision.sphereContainsBox(this.boundSphere,meshCollider._boundBox)!==/*laya.d3.math.ContainmentType.Disjoint*/0){
var positions=meshCollider.mesh._positions;
for (var i=0,n=positions.length;i < n;i++){
if (Collision.sphereContainsPoint(this.boundSphere,positions[i])===/*laya.d3.math.ContainmentType.Contains*/1)
return true
}
return false;
}else {
return false;
}
break ;
上面代码中的
var positions=meshCollider.mesh._positions;
这个poistions是几何体初始化时的定点坐标,而不是根据几何体位置计算出来的当前坐标。所以SphereCollider和MeshCollider碰撞时,会不生效。