球形检测

1.Physic.OverlapSphere 重叠球

检测一定范围内所有带有碰撞器的游戏对象

方法示例:

Collider [ ]  cols = Physics.OverlapSphere(this.gameObject.transform,5f);

for(int = 0; i

{

    if(cols[i].name=="Enemy")

     {

         this.gameObject.transform.LookAt(cols[i].transform);

     }

}

上面是检测半径为五范围内的带有碰撞器的游戏对象,如果有名字为Enemy的就看着它。

该方法返回球内或与之接触的所有的碰撞器。注意:这个针对碰撞器的边界体检测,而不是针对实际的碰撞器。

2.Physic.SphereCast 球形投射

当球形扫描与任意碰撞器相交,返回true,否则返回false。沿着射线方向投射一个球形,并返回更多的碰到的信息。

方法实例(部分代码):

private CapsuleCollider m_capsule;

RaycastHit hit;

if(Physics.SphereCast(m_capsule.transfom.position,m_capsule.radius,Vector3.down,out hit,((m_capsule.height/2-m_capsule.radius)+.0.1f)))

   {

          //射线所碰到的表面的法线 用hit.normal来表示

          curGroundNormal = hit.normal;

      }

参数1:扫描开始的球形的中心

参数2:球的半径

参数3:球形扫描的方向

参数4:返回值 ,这里返回的是射线 

参数5:扫描的长度

注意:SphereCast不检测球体重叠的碰撞器,球形投射不检测触发器。如果从脚本或动画移动碰撞器,至少需要一个FixedUpdate来执行物理库更新数据结构,球形投射在它的新位置之前碰到碰撞器


你可能感兴趣的:(Unity)