Unity C# | Physics.Raycast

更新於 發佈於 閱讀時間約 5 分鐘

前言

  這篇文章將會講述物理射線的運作原理,以及他們怎麼使用,在 Unity 中射線是非常重要的一個部分,無論是 Debug 或是物理射線,都需要理解並懂得運用。

Physics.Raycast

  官方的 API 可以去最後的參考資料參閱,接下來我會敘述物理射線大概會有哪些東西,以及它的注意事項。

  物理射線的資料型態是 bool ,回傳於射線打到目標的時候,因此射線只會回傳一次,不會貫穿目標取得所有目標,它使用 Fixed Update,所以要去注意並不是無時無刻檢查,而是每隔 0.2f 秒才做檢查。

Ray

  雷射是最重要的部分,它可以是先定義好,也可以在呼叫物理射線時再去做定義,定義一個雷射,會需要兩個向量,第一個是座標,第二個是方向。

vector3 origin = new vector3(this.tranform.position)
vector3 direction = new vector3(this.transform.forward);
Ray ray = new ray(origin,direction);

RaycastHit

  當我們製作的射線打到目標,會回傳 bool 值,同時會獲取目標的一些資料數值,譬如它是誰、打中哪裡、距離多遠等等資訊,詳情可以參考最後面的參考資料。

RaycastHit HitInfo;

LayerMask

  因為射線只能觸發一次,所以我們可能會希望射線會穿過某些目標,或者只命中某些目標,這個時候就會需要 LayarMask 來進行設定,這個的詳細內容會比較複雜一點,詳情可以參考最後面的參考資料。

LayerMask mask = LayerMask.GetMask("Player");
LayerMask mbsk = LayerMask.LayerToName(7);
LayerMask mcsk = LayerMask.NameToLayer("PlayersLayer");
LayerMask mdsk = 1 << 7 ;

MaxDistance

  這個很容易理解,就是射線會偵測的最大距離,就像子彈也有射程一樣,光線和雷射也是,通常我們不會去定義,而是直接設定多少,不過這邊依然提前設定好。

float MaxDistance = 100;

使用方法

  我在這邊從最簡單的使用方式,到比較複雜的使用方式,裡面的參數都是使用上面定義好的內容:

01. 回傳命中與否

  當我們只需要知道是否命中目標時,可以只有雷射與距離。

if(Phsics.RayCast(ray,MaxDistance))...

02. 取得目標資訊

  當我們命中目標後,需要對目標進行一些操作,就可以再補上 RaycastHit。

if(Phsics.Raycast(ray,hitInfo,MaxDistance))...

03. 限定命中指定 Layer 圖層

  當我們需要命中指定圖層時,就可以再補上 LayerMask。

if(Phsics.Raycast(ray,hitInfo,MaxDistance,mask))...

04. 取得 Collider 碰撞情形

  這個我沒用做,前面我也沒放定義,有需求可以去參考資料查詢。

if(Phsics.Raycast(ray,hitInfo,MaxDistance,mask,queryTriggerInteraction))...

後記

  其實之前就有考慮撰寫相關的文章,不過因為射線其實不好學,很多教學都只有使用方式,而且每一位的使用方式都不相同,官方 API 的教學也是太過詳細導致內容不太完整,但寫起來就會發現好像還好,看來我已經習慣使用它了。

參考資料

官方 API :Physics.Raycast

官方 API :RaycastHit

官方 API :LayerMask

raw-image


留言
avatar-img
留言分享你的想法!
avatar-img
瓶裝雪的沙龍
111會員
247內容數
你好,我是瓶裝雪!我是一名遊戲設計師!
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
Thumbnail
這篇文章將會講述一個 Physics.Raycast 命中判斷的簡易寫法。
Thumbnail
這篇文章將會講述一個 Physics.Raycast 命中判斷的簡易寫法。
Thumbnail
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
Thumbnail
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
Thumbnail
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
Thumbnail
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
這篇文章將會講述圓形波的設計思路、製作流程和應用方向。
Thumbnail
這篇文章將會講述圓形波的設計思路、製作流程和應用方向。
Thumbnail
●天線 天線是作無線電波的發射或接收用的一種金屬裝置(如杆、線或線的排列) 在無線電設備中用來發射或接收電磁波的部件。 無線電通信、廣播、電視、雷達、導航、電子對抗、遙感、射電天文等工程系統,凡是利用電磁波來傳遞資訊的,都依靠天線來進行工作。 ●電磁波頻段 3.各國軍用頻段比較 ●雷達原理及功能
Thumbnail
●天線 天線是作無線電波的發射或接收用的一種金屬裝置(如杆、線或線的排列) 在無線電設備中用來發射或接收電磁波的部件。 無線電通信、廣播、電視、雷達、導航、電子對抗、遙感、射電天文等工程系統,凡是利用電磁波來傳遞資訊的,都依靠天線來進行工作。 ●電磁波頻段 3.各國軍用頻段比較 ●雷達原理及功能
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News