Unity C# | 射線檢測與改變物體顏色之應用

更新 發佈閱讀 7 分鐘

一、前言

  這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。

二、射線檢測概述

  射線是初學者在學習控制非特定目標的做法之一,另外一種是藉由碰撞體去偵測碰撞單位,射線是其中相對困難的做法,本篇文章會使用到射線與輔助線的內容,有興趣可以參考之前的兩篇文章。

《Unity C# | Physics.Raycast》

《Unity C# | 遊戲製作輔助線Gizmos & 常用函數清單》

1. 創建射線

  我們會需要在遊戲物件創建一道射線,往遊戲場景中的某個方向發射,取得特定圖層的遊戲物件,這條射線會命中所有圖層的遊戲物件,只要對方有碰撞體組件,但只有在命中特定圖層才會通過判斷。

2. 改變命中物體顏色

  通過判斷後,我們要可視的改變,也可以使用 Debug.Log 去測試,我們會抓取命中物件的渲染組件,並改變渲染組件 Material 欄位的顏色。

三、射線應用流程

  那接下來會簡單講述射線的流程。

1. 創建測試用方塊(Cube)

  創建三個測試方塊:

第一個方塊座標位於(0,0,0),並命名為「origion」。
第二個方塊座標位於(0,0,3),並命名為「Target_A」。
第三個方塊座標位於(0,0,6),並命名為「Target_B」。

2. 創建程式腳本(Script)並添加至物件

  創建一個程式腳本,並添加到物件origion,可以拖曳程式腳本到此物件,也可以直接在此物件點擊 Add Component。

3. 宣告顯示變數

  這一次我們的射線起點為物件本身位置,並且往正前方打出一條射線,因此射線的起點與方向固定,我們將額外添加兩個參數,分別為距離與圖層:

[SerializeField] private float MaxDistance;

[SerializeField] private LayerMask mask;

程式腳本自己可以抓取起點與方向,其宣告方式如下:

private Vector3 m_position;

private Vector3 direction;

程式腳本自己可以抓取渲染組件,其宣告方式如下:

private Renderer render;

4. 函式-取得玩家位置

private void GetDirection()

{

m_position = transform.position;

direction = transform.forward;

}

  我們要指定玩家的位置跟方向,封裝成一個函式的習慣,除了可以維護程式的可讀性,也能讓程式設計的過程清晰,此函式可以放在開始函式(Start()),如果其座標會持續變動的話,也可以放在更新函式(Update())。

5. 函式-雷射判斷

private void RayCastHitTest()

{

Ray ray = new Ray(m_position, direction);

RaycastHit hit;

if (Physics.Raycast(ray, out hit, MaxDistance, mask))

{

ChangeRenderColor(hit);

}

}

  函式自行宣告了兩個暫時變數,第一個是雷射,其起點為物件的座標,方向為物件的正前方;第二個是射線命中,可以抓取命中目標的資料,包含遊戲目標與命中點等訊息。

  創建一個判斷式,並在其中創建一個物理射線的判斷函式,我們選擇四個參數的判斷函式,包含雷射、射線命中訊息、最大距離、圖層,此函式會回傳一個布林值,若命中且圖層為指定圖層,則回傳 True。

6. 函式-改變物件顏色

private void ChangeRenderColor(RaycastHit hit)

{

render = hit.transform.GetComponent<Renderer>();

render.material.color = Color.red;

}

  我們把改變命中目標顏色的程式碼抓取出來變成一個函式,這個習慣一方面能協助此文章的章節分類,也能協助程式碼的維護,若射線偵測同時用 Hit 進行很多的操作,那這個習慣能準確的分類命中功能。

  第一行程式碼,我們抓取命中目標的渲染組件;第二行程式碼,我們改變渲染組件中材質的顏色,並改成紅色。

7. 輔助線-在 Sence 中看見射線

private void OnDrawGizmos()

{

Gizmos.color = Color.blue;

Gizmos.DrawRay(transform.position, transform.forward * MaxDistance);

}

  我們使用官方內建函式 OnDrawGizmos,它會創造一個此程式的Gizmos屬性,並由上往下執行,首先我們改變此函式的顏色,改成藍色,並且繪製一條雷射,起點為自己,終點為方向乘上距離。

8. 測試

  最後,我們可以按下 Play 進行測試,此時程式碼沒有效果,因為此時的射線距離為默認值。點擊 origion ,把 Max Distance 改為10,你會發現在 Sence 中出現一條藍色射線,往前打出,但是程式碼還是沒有效果。

  點擊Mask,我們改變它的圖層為 Default,這樣一來只要命中 Default 圖層時,此物件的顏色就會變成紅色。

四、後記

  這篇文章是我研究射線順便寫的文章,主要是分享射線的實際使用,沒想到也花了我不少的時間。
































留言
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
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
Thumbnail
這篇文章將會從基本概述到射線偵測應用的詳細步驟,講述運用射線改變特定圖層中,射線命中的物件顏色。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這篇文章將會講述一個 Physics.Raycast 命中判斷的簡易寫法。
Thumbnail
這篇文章將會講述一個 Physics.Raycast 命中判斷的簡易寫法。
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
Thumbnail
這篇文章將會講述 if 判斷式的簡寫與可讀性維護。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這篇文章將會講述圓形波的設計思路、製作流程和應用方向。
Thumbnail
這篇文章將會講述圓形波的設計思路、製作流程和應用方向。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這篇文章將會講述 Blockout 的介紹和適合的材質。
Thumbnail
這篇文章將會講述 Blockout 的介紹和適合的材質。
Thumbnail
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
Thumbnail
這篇文章將會講述常見的座標(Transform)旋轉方式,適合初學者到進階程式員複習。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
這篇文章將會講述 Unity Visual Effect Graph 的系統簡介,並且簡單介紹這項系統主線上的四個核心組件。
Thumbnail
物理中最基礎的表現就是碰撞,像是這次的示範是左邊的方塊撞擊右邊的方塊並彈開,這就是一種碰撞。在Unity裡想要實現這種碰撞的表現要有兩種東西,Rigidbody 及Collider 這兩種Component。
Thumbnail
物理中最基礎的表現就是碰撞,像是這次的示範是左邊的方塊撞擊右邊的方塊並彈開,這就是一種碰撞。在Unity裡想要實現這種碰撞的表現要有兩種東西,Rigidbody 及Collider 這兩種Component。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News