91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Unity中Raycast射線檢測怎么用

發布時間:2021-12-13 16:11:27 來源:億速云 閱讀:1016 作者:小新 欄目:大數據

這篇文章給大家分享的是有關Unity中Raycast射線檢測怎么用的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

項目地址:Raycast - SouthBegonia (https://github.com/SouthBegonia/UnityWorld/tree/master/Raycast)

Unity中Raycast射線檢測怎么用

Unity中Raycast射線檢測怎么用

Ray 射線

  • 含義:官方解釋為一條無窮的線,開始于origin點,朝向direction方向(但是,根據項目驗證來看其默認長度為單位向量,只有對direction進行乘以倍率,才可實現延長射線,而非無窮)

  • 用法:

    Ray ray = new Ray(transform.position,transform.forward)
    Ray camerRay = Camera.main.ScreenPointToRay(Input.mousePosition)

RaycastHit 光線投射碰撞信息

  • 含義:取得從Raycast函數中得到的碰撞信息(注意不是collider哈,是包含collider信息)

  • 關鍵變量:point、collider、rigidbody、transform

檢測方法 - 線型檢測

Physics.Raycast 光線投射

  • 功能:在已有一條射線(也可無)的基礎上,使用射線(新建射線)進行一定距離內的定向檢測。可修改射線長度,限制其檢測的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"))
  • 適用場合:配合相機坐標轉換實現各類交互

Physics.RaycastAll 所有光線投射

  • 功能:機理用法大致同Raycast,當區別在于可檢測射線路徑上的 所有物體 ,返回檢測信息的數組。其他帶All后綴的方法也同理

  • 用法:

    RaycastHit[] hits = RaycastAll(Vector3.zero, Vector.forward, distance, LayerMask.GetMask("Enemy"))
    RaycastHit[] hits = RaycastAll(MyRay, distance, LayerMash.GetMask("Enemy"))
  • 適用場合:穿透性檢測

Physics.Linecast 線段投射

  • 功能:建立 某兩點之間 的射線進行檢測,返回bool類型

  • 用法:

    Linecast(startPos, endPos, LayerMask.GetMask("Enemy"))
    Linecast(startPos, endPos, out RaycastHit, LayerMask.GetMask("Enemy"))
  • 適用場合:特定地點局部距離射線檢測

檢測方法 - 體型檢測

Physics.SphereCast 球體投射

  • 功能:擴展檢測范圍為球形,返回bool類型。但是該投射用法需要萬分小心,見下

  • 用法:

    SphereCast (originPos, radius, direction, out RaycastHit, distance, LayerMask.GetMask("Enemy"))
    SphereCast (Ray, radius, out RaycastHit, distance, LayerMask.GetMask("Enemy"))
  • 適用場合:檢測目的地是否可抵達,從而判斷可移動性

Physics.Boxcast 塊體投射/ CapsuleCast 膠囊體投射

  • 功能:同球體投射

  • 用法:同球體投射

Physics.OverlapSphere 相交球

  • 功能:同樣檢測球形,但與SphereCast存在較大區別

  • 用法:

    • Collider[] hits = Physics.OverlapSphere(startPos, radius, LayerMask.GetMask("Enemy")) :以startPos為原點,創建半徑為radius的球形,檢測區域為整個球形包圍體(實心),檢測Enemy層上的物體,返回所有碰撞物體的collider而不是RaycastHit

  • 適用場合:檢測掛載物體球形范圍內是否存在碰撞,常用方法

Physics.IgnoreCollision 忽略碰撞

IgnoreCollision (collider1, collider2, ignore)

感謝各位的閱讀!關于“Unity中Raycast射線檢測怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

噶尔县| 景宁| 康平县| 牙克石市| 胶南市| 新沂市| 名山县| 武威市| 宣汉县| 柳州市| 扶余县| 汤阴县| 青冈县| 琼结县| 北流市| 山阴县| 平远县| 扶余县| 甘肃省| 南城县| 若尔盖县| 庄河市| 确山县| 沙湾县| 睢宁县| 江永县| 咸阳市| 永和县| 康平县| 正定县| 维西| 滨州市| 罗江县| 泸溪县| 河南省| 芮城县| 都匀市| 黄石市| 武乡县| 宁乡县| 无锡市|