射線:從一個點往一個方向,發射一根無限長的射線,這根射線會與場景中帶有 Collider 組件的物體發生碰撞。 射線的使用: 根據上面的代碼: hitInfo.point:表示碰撞點的坐標。 Physics.Raycast():使用這個方法檢測射線時,因為該方法重載很多,一定要弄清楚自己使用的是哪個 ...
射線:從一個點往一個方向,發射一根無限長的射線,這根射線會與場景中帶有 Collider 組件的物體發生碰撞。
射線的使用:
1 public class Test 2 { 3 private void Start() 4 { 5 if (Input.GetMouseButtonDown(0)) 6 { 7 //從主攝像機發射一條射線至滑鼠點擊的位置。 8 Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition); 9 //從自己的位置,向世界坐標軸的 forward 方向發射一條射線。 10 Ray ray2 = new Ray(this.transform.position, Vector3.forward); 11 //聲明一個 RaycastHit 類型的變數,存儲射線的碰撞信息。 12 RaycastHit hitInfo; 13 //檢查射線是否碰撞到物體 14 if (Physics.Raycast(ray1,out hitInfo)) 15 { 16 //執行代碼 17 } 18 } 19 } 20 }
根據上面的代碼:
hitInfo.point:表示碰撞點的坐標。
Physics.Raycast():使用這個方法檢測射線時,因為該方法重載很多,一定要弄清楚自己使用的是哪個重載方法,填對參數,不然很容易出錯。
因為射線是看不見的,我們可以通過畫線的方式來模擬射線,方便我們調試,方法如下:
Debug.DrawRay(Vector3 pos,Vector3 dir,Color c):畫線。
pos:起點坐標。
dir:方向。
c:顏色。