Unity Physics.OverlapCapsule
这个函数判定胶囊中有多少碰撞体。
Collider[] OverlapCapsule(Vector3 point0, Vector3 point1, float radius, int layerMask);
第1,2个参数是胶囊的底部和顶部球心坐标。这里有个坑,传入的时候不是获取的CapsuleCollider自己的中心和CapsuleCollider的高度的运算。因为CapsuleCollider.center是本地坐标。我在使用时用的用的是胶囊的gameobject的坐标和CapsuleCollider.height的运算
int intLayer = LayerMask.NameToLayer("Ball");
LayerMask lm = 1 << intLayer;
var colliders = Physics.OverlapCapsule(transform.position - colliderPlayer.height * 0.5f * Vector3.up,
transform.position + colliderPlayer.height * 0.5f * Vector3.up,
colliderPlayer.radius, lm);
还有一个是Layer的过滤
只检测某Layer ?? ??? ??? ?int intLayer = LayerMask.NameToLayer("layer名称"); ?? ??? ??? ?LayerMask lm = 1 << intLayer; 除了某Layer之外的都检测
?? ??? ??? ?int intLayer = LayerMask.NameToLayer("layer名称"); ?? ??? ??? ?LayerMask lm = ~ (1 << intLayer);
|