1.一个可以控制方向和长度的射线   --通过返回bool值判断是否碰撞


Vector3 
 fwd = transform.TransformDirection( 
 Vector3 
 .forward); 
 
//定义一个方向fwd
 
bool 
 grounded = 
 Physics 
 .Raycast(transform.position, fwd, 10);
 
//从该物体向fwd方向投射一条射线 长度为10 
 
//如果grounded为true则碰撞到了物体 反之亦然



2.线性投射  --通过返回bool值判断是否碰撞到的物体层


Debug 
 .DrawLine(transform.position, Line_floor.position, 
 Color 
 .red, 1f);
 
//画一条线 从该游戏体位置发射 到Line_floor游戏体位置 红色 1帧渲染出来
 
bool 
 grounded = 
 Physics 
 .Linecast(transform.position, Line_floor.position, 1 << 
 LayerMask 
 .NameToLayer( 
 "Ground" 
 ));
 
//从该游戏体位置发射 到Line_floor游戏体位置一个线性投射,Line_floor游戏体的层为
 
  Ground则返回true 反之亦然



3. 在场景中投下投射方向的一条光线,并返回第一个碰撞体的细节信息


-- 
 bool返回值为是否有碰撞产生(长度之内,长度不写就无限长)
 
RaycastHit 
 hit;
 
//返回信息的接受变量
 
bool 
 grounded = 
 Physics 
 .Raycast(transform.position, 
 Vector3 
 .forward, 
 out  
 hit,100);
 
//Physics.Raycast(开始位置,射线方向,返回信息的接受变量,射线长度)
 
hit.collider.gameObject.name
 
//返回值的使用方式需要先collider



4. 投射一条光线并返回所有碰撞,也就是投射光线并返回一个RaycastHit[]数组


-- 
 返回值为投射方向的所有碰撞器(长度之内,长度不写就无限长)
 
RaycastHit[] hits;
 
//返回信息的接受数组
 
hits = 
 Physics 
 .RaycastAll(transform.position, 
 Vector3 
 .forward, 100.0F);
 
//Physics.RaycastAll(开始位置,方向,长度);
 
hits[0].collider.gameObject.name
 
//返回值的使用方式需要先collider



5.相交球 返回球型半径之内(包括半径)的所有碰撞体 collider[]。可用于拾取物品


-- 
 返回值为半径球形射线碰撞到的所有碰撞器
 
Collider 
 [] col = 
 Physics 
 .OverlapSphere(transform.position, 1f);
 
//Physics.OverlapSphere(位置,半径) 以半径长度为一个球形射线返回射线碰撞的所有碰撞体    信息
 
 
 
 
以上有的方法可选择加入 1 << 
 LayerMask 
 .NameToLayer( 
 "Ground" 
 )  
 
//可以在射线方法最后面加入这个,判断层 可 
 参考第二种方法