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
瓶裝雪的沙龍
117會員
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
這篇文章將會講述物理射線的運作原理,以及他們怎麼使用,在 Unity 中射線是非常重要的一個部分,無論是 Debug 或是物理射線,都需要理解並懂得運用。
Thumbnail
這篇文章將會講述物理射線的運作原理,以及他們怎麼使用,在 Unity 中射線是非常重要的一個部分,無論是 Debug 或是物理射線,都需要理解並懂得運用。
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
Thumbnail
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
Thumbnail
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
在Unity中,Gizmos是製作輔助線的函式,用於繪製物理設線視覺化、協助重疊物件點擊、紀錄物件移動路徑等等,用途將相當廣泛,算是非必要的輔助程式,用於輔助遊戲製作。
Thumbnail
在Unity中,Gizmos是製作輔助線的函式,用於繪製物理設線視覺化、協助重疊物件點擊、紀錄物件移動路徑等等,用途將相當廣泛,算是非必要的輔助程式,用於輔助遊戲製作。
Thumbnail
這篇文章將會講述一個 Physics.Raycast 命中判斷的簡易寫法。
Thumbnail
這篇文章將會講述一個 Physics.Raycast 命中判斷的簡易寫法。
Thumbnail
這篇文章將會講述圓形波的設計思路、製作流程和應用方向。
Thumbnail
這篇文章將會講述圓形波的設計思路、製作流程和應用方向。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News