Unity中Raycast射線檢測怎么用

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

10余年的達(dá)孜網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整達(dá)孜建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“達(dá)孜網(wǎng)站設(shè)計”,“達(dá)孜網(wǎng)站推廣”以來,每個客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

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

Unity中Raycast射線檢測怎么用

Unity中Raycast射線檢測怎么用

Ray 射線

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

  • 用法:

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

RaycastHit 光線投射碰撞信息

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

  • 關(guān)鍵變量:point、collider、rigidbody、transform

檢測方法 - 線型檢測

Physics.Raycast 光線投射

  • 功能:在已有一條射線(也可無)的基礎(chǔ)上,使用射線(新建射線)進(jìn)行一定距離內(nèi)的定向檢測。可修改射線長度,限制其檢測的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"))
  • 適用場合:配合相機(jī)坐標(biāo)轉(zhuǎn)換實(shí)現(xiàn)各類交互

Physics.RaycastAll 所有光線投射

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

  • 用法:

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

Physics.Linecast 線段投射

  • 功能:建立 某兩點(diǎn)之間 的射線進(jìn)行檢測,返回bool類型

  • 用法:

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

檢測方法 - 體型檢測

Physics.SphereCast 球體投射

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

  • 用法:

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

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

  • 功能:同球體投射

  • 用法:同球體投射

Physics.OverlapSphere 相交球

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

  • 用法:

    • Collider[] hits = Physics.OverlapSphere(startPos, radius, LayerMask.GetMask("Enemy")) :以startPos為原點(diǎn),創(chuàng)建半徑為radius的球形,檢測區(qū)域?yàn)檎麄€球形包圍體(實(shí)心),檢測Enemy層上的物體,返回所有碰撞物體的collider而不是RaycastHit

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

Physics.IgnoreCollision 忽略碰撞

IgnoreCollision (collider1, collider2, ignore)

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

文章題目:Unity中Raycast射線檢測怎么用
分享網(wǎng)址:http://muchs.cn/article16/piscgg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、小程序開發(fā)虛擬主機(jī)、商城網(wǎng)站、網(wǎng)站導(dǎo)航品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)