原创文章如需转载请注明:转载自风宇冲Unity3D教程学院
Ray只有起点和方向.函数附加x距离内的条件。
用到的Raycast主要有两个:
Physics.Raycast :
作用于任何物体,可以加限定 只检测某layer层
- RaycastHit hit;
- if(Physics.Raycast(transform.position, Vector3.down,out hit, 1000f))
-
print("dawdddd");
- RaycastHit hit;
- if(Physics.Raycast(transform.position, Vector3.down,out hit, 1000f,8))
-
print("dawdddd");
只检测ray是否穿过该Collider
- RaycastHit hit;
- Ray ray= new Ray(transform.position,Vector3.down);
- if(collider.Raycast(ray,out hit,100))
-
print("dawdddd");
注意:
(1)无论是哪种raycast检测,从物体内部穿到外面的,都不视为穿过。只有从物体外穿到里面的才视为穿过。
(2)可以绘制 可见线 来辅助开发
1.Debug.DrawLine(V3 start,V3 end);
2. Gizmos.DrawLine
如果在scene的Gizmos选项下 勾选 3D Gizmos, 那么线段位于真实3D空间里,有前后遮挡。
如果不勾选,则gizmo永远在最前显示。
-
void OnDrawGizmos () { -
Vector3 checkPos_a =transform.position + new Vector3(0,0,0.2f); -
-
Gizmos.color = Color.green; -
Gizmos.DrawLine(checkPos_a,checkPos_a + Vector3.down*15); -
}