Raycast
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");
Collider.Raycast: 只检测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);
-
}
|