Unity中常用射线类型的整合

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" )  
//可以在射线方法最后面加入这个,判断层 可 参考第二种方法

你可能感兴趣的:(Unity中常用射线类型的整合)