Unity 射线碰撞检测
生活随笔
收集整理的這篇文章主要介紹了
Unity 射线碰撞检测
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 定義
射線是在三維世界中從一個點沿一個方向發射的一條無限長的線。在射線的軌跡上,一旦與添加了碰撞器的模型發生碰撞,將停止發射。射線碰撞檢測,就是由某一物體發射出一道射線,射線碰撞到物體之后,可以得到該物體的相關信息,然后就可以對該物體進行一些操作了。
2 原理
步驟如下:
3 代碼實現
Ray 射線類和 RaycastHit 射線投射碰撞信息類是兩個最常用的射線工具類。
public class ExampleClass : MonoBehaviour {//參數hit 為out類型,可得到碰撞檢測的返回值;RaycastHit hit;void Update(){ //判斷是否點擊了鼠標左鍵if (Input.GetMouseButtonDown(0)){//參數ray 為射線碰撞檢測的光線(返回一個從相機到屏幕鼠標位置的光線)Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out hit)) //如果碰撞檢測到物體{Debug.Log(hit.collider.gameObject.name);//打印鼠標點擊到的物體名稱}}} }4 關鍵函數
從攝像頭到 position 的射線:public Ray ScreenPointToRay(Vector3 position);
檢測在這個射線中碰撞的函數 Physics.Raycast(有16個重載),下面列舉一些:
- 參數 ray 為射線碰撞檢測的光線。
- 參數 hitInfo 為 out 類型,可得到碰撞檢測的返回值。
- 參數 distance 為碰撞檢測的射線長度。
- 參數 layerMask 在指定層上碰撞檢測。
- 參數 origin 是在世界坐標,射線的起始點。
- 參數 direction 是射線的方向。
返回值:bool,如果碰撞檢測成功就返回1,否則為0。
總結
以上是生活随笔為你收集整理的Unity 射线碰撞检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Transformati
- 下一篇: R| ggseg 绘制统计结果