- camera.ScreenPointToRay(Input.mousePosition),自camera.tranform.position起經過Input.mousePosition發射一條ray並返回ray
- camera.ScreenToWorldPoint(Input.mousePosition+new Vector3(0, 0, (xxx))),將屏幕坐標轉換為世界坐標,但必須賦z值,z值應為攝像機到該點所在平面的投影
- 不要忘記distance參數,使用layermask可能與distance混淆
-
1 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); 2 RaycastHit hit; 3 4 if (Physics.Raycast(ray,out hit,layermask)) 5 { 6 Vector3 dir = hit.point - Camera.main.transform.position; //dir為由攝像機指向攝像機到射線打到的點的向量 7 Vector3 forward = Camera.main.transform.forward; //指向攝像機正前方的單位向量 8 Debug.Log("Camera.main.ScreenToWorldPoint(Input.mousePosition) " 9 + Camera.main.ScreenToWorldPoint(Input.mousePosition) 10 + new Vector3(0, 0, (Vector3.Dot(dir, forward)))); //Vector3.Dot(dir, forward)為dir與forward的點乘,幾何意義為dir在forward上的投影 11 Debug.Log("hit.point " + hit.point); 12 }