分享

【风宇冲】Unity3D教程宝典之Raycast | 学步园

 雪柳花明 2016-04-22

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院

                                 Raycast

Ray只有起点和方向.函数附加x距离内的条件。

用到的Raycast主要有两个:
Physics.Raycast
作用于任何物体,可以加限定 只检测某layer层

  1. RaycastHit hit;
  2. if(Physics.Raycast(transform.position, Vector3.down,out hit, 1000f))
  3.     print("dawdddd");


  1. RaycastHit hit;
  2. if(Physics.Raycast(transform.position, Vector3.down,out hit, 1000f,8))
  3.     print("dawdddd");

Collider.Raycast
只检测ray是否穿过该Collider

  1. RaycastHit hit;
  2. Ray ray= new Ray(transform.position,Vector3.down);
  3. if(collider.Raycast(ray,out hit,100))
  4.             print("dawdddd");



注意:
(1)无论是哪种raycast检测,从物体内部穿到外面的,都不视为穿过。只有从物体外穿到里面的才视为穿过。
(2)可以绘制 可见线 来辅助开发
1.Debug.DrawLine(V3 start,V3 end);
2. Gizmos.DrawLine   (可以在编辑模式下显示,可视化更强)
如果在scene的Gizmos选项下 勾选 3D Gizmos, 那么线段位于真实3D空间里,有前后遮挡。
如果不勾选,则gizmo永远在最前显示。

  1.     void OnDrawGizmos () {
  2.         Vector3 checkPos_a =transform.position + new Vector3(0,0,0.2f);
  3.      
  4.         Gizmos.color = Color.green;
  5.         Gizmos.DrawLine(checkPos_a,checkPos_a + Vector3.down*15);
  6.     }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多