您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Unity中Raycast射線檢測怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
項目地址:Raycast - SouthBegonia (https://github.com/SouthBegonia/UnityWorld/tree/master/Raycast)
Ray 射線
含義:官方解釋為一條無窮的線,開始于origin點,朝向direction方向(但是,根據項目驗證來看其默認長度為單位向量,只有對direction進行乘以倍率,才可實現延長射線,而非無窮)
用法:
Ray ray = new Ray(transform.position,transform.forward)
Ray camerRay = Camera.main.ScreenPointToRay(Input.mousePosition)
含義:取得從Raycast函數中得到的碰撞信息(注意不是collider哈,是包含collider信息)
關鍵變量:point、collider、rigidbody、transform
功能:在已有一條射線(也可無)的基礎上,使用射線(新建射線)進行一定距離內的定向檢測。可修改射線長度,限制其檢測的Layer層,并且可以得到射線檢測到的碰撞信息。但僅能檢測到 第一個被射線碰撞的物體 ,后面的物體無法被檢測到
用法:
Raycast(transform.position, Vector.forward, distance, LayerMask.GetMask("Enemy"))
Raycast(transform.position, Vector.forward, distance, out RaycastHitInformation ,LayerMask.GetMask("Enemy"))
Raycast (MyRay, distance, LayerMash.GetMask("Enemy"))
Raycast (MyRay, out RaycastHitInformation, distance, LayerMask.GetMask("Enemy"))
適用場合:配合相機坐標轉換實現各類交互
功能:機理用法大致同Raycast,當區別在于可檢測射線路徑上的 所有物體 ,返回檢測信息的數組。其他帶All后綴的方法也同理
用法:
RaycastHit[] hits = RaycastAll(Vector3.zero, Vector.forward, distance, LayerMask.GetMask("Enemy"))
RaycastHit[] hits = RaycastAll(MyRay, distance, LayerMash.GetMask("Enemy"))
適用場合:穿透性檢測
功能:建立 某兩點之間 的射線進行檢測,返回bool類型
用法:
Linecast(startPos, endPos, LayerMask.GetMask("Enemy"))
Linecast(startPos, endPos, out RaycastHit, LayerMask.GetMask("Enemy"))
適用場合:特定地點局部距離射線檢測
功能:擴展檢測范圍為球形,返回bool類型。但是該投射用法需要萬分小心,見下
用法:
SphereCast (originPos, radius, direction, out RaycastHit, distance, LayerMask.GetMask("Enemy"))
SphereCast (Ray, radius, out RaycastHit, distance, LayerMask.GetMask("Enemy"))
適用場合:檢測目的地是否可抵達,從而判斷可移動性
功能:同球體投射
用法:同球體投射
功能:同樣檢測球形,但與SphereCast存在較大區別
用法:
Collider[] hits = Physics.OverlapSphere(startPos, radius, LayerMask.GetMask("Enemy"))
:以startPos為原點,創建半徑為radius的球形,檢測區域為整個球形包圍體(實心),檢測Enemy層上的物體,返回所有碰撞物體的collider而不是RaycastHit
適用場合:檢測掛載物體球形范圍內是否存在碰撞,常用方法
IgnoreCollision (collider1, collider2, ignore)
感謝各位的閱讀!關于“Unity中Raycast射線檢測怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。