2024 虛擬實境 x 人因設計 09unity碰撞器Collider&Trigger-3(應用)

閱讀時間約 4 分鐘

觸發器(Trigger) 是碰撞器(Collider) 的另一種型態,可製作不同的互動方式。

那我們就來看Trigger的練習吧

raw-image

新建一個CUBE,一樣新增一個腳本給他~,命名EntranceTrigger

腳本打下剛剛測試的,確認可以正常運作
private void OnTriggerEnter(Collider Entrance)

{

if (Entrance != null)

{

Debug.Log("玩家已進來入口");

}

}

private void OnTriggerStay(Collider Entrance)

{

if (Entrance != null)

{

Debug.Log("玩家進來入口ING");

}

}

private void OnTriggerExit(Collider Entrance)

{

if (Entrance != null)

{

Debug.Log("玩家已離開入口");

}

}

raw-image


不要只跑文字,來點色彩變化ㄅ🌈🌈🌈🌈🌈🌈

宣告色彩變數

public Color colorIn;

public Color colorOut;

public Renderer rend;

raw-image

再新增下方反白字

private void OnTriggerEnter(Collider Entrance)

{

if (Entrance != null)

{

Debug.Log("玩家已進來入口");

rend.material.color = colorIn;

}

}

private void OnTriggerStay(Collider Entrance)

{

if (Entrance != null)

{

Debug.Log("玩家進來入口ING");

}

}

private void OnTriggerExit(Collider Entrance)

{

if (Entrance != null)

{

Debug.Log("玩家已離開入口");

rend.material.color = colorOut;

}

}

raw-image


在外面介面就可以調顏色ㄌ colorIn&colorOut

raw-image
raw-image


最後來一個變化 這個也是Unity其中一個方法,A-B-A漸變顏色

我們把它放在OnTriggerStay裡面,要讓它持續變化,

前面別忘了宣告一個變數給他

public float duration = 1.0f;


float lerp = Mathf.PingPong(Time.time, duration) / duration;

rend.material.color = Color.Lerp(colorIn, colorOut, lerp);

raw-image

##大家如果在Unity的腳本有看到math.#@%的通常都是特殊運算哦!!!

Mathf.PingPong(Time.time, duration)

Mathf.PingPong會在0到指定時間間隔內來回彈跳,可以用來控制一些週期性變化的效果,比如顏色在兩值之間變化。

Time.time 表示遊戲運行的時間,而 duration 則是你設定的時間間隔。Time.time會隨著遊戲的運行而增加,比如從 0 開始。而 duration 則是我們指定的一個時間範圍,比如 2 秒,當 Time.time 遞增時,Mathf.PingPong(Time.time, duration) 的返回值會在 0 到 2 之間來回彈跳

我們將 Mathf.PingPong(Time.time, duration) 的返回值賦值給 lerp 變數,得到的 lerp 就會在 0 到 2 之間來回彈跳。但通常在顏色過渡的情況下,希望 lerp 的值在 0 到 1 之間來回變化,因為 Color.Lerp 函數接受的參數是 0 到 1 之間的值,0 表示一個顏色的起始值,1 表示結束值,0.5 表示中間值。


所以為了讓 lerp 的值在 0 到 1 之間來回變化,我們需要將 lerp 除以 duration。因為 lerp 的範圍是 0 到 2,而 duration 是我們指定的時間範圍,比如 2 秒,當我們將 lerp 除以 duration 時,就把 lerp 的範圍限制在了 0 到 1 之間,這樣就可以作為 Color.Lerp 函數的參數使用,實現順暢的顏色過渡效果。


當 lerp 為 0 時,顏色會是 colorIn;當 lerp 為 1 時,顏色會是 colorOut

當角色進去物體內並觸發後,就會開始漸層閃爍囉~~


這就是Collider 跟Trigger 的小應用啦~~~~
恭喜大家

    4會員
    20內容數
    Gavin Hsieh ㄉ基地
    留言0
    查看全部
    發表第一個留言支持創作者!
    你可能也想看
    Google News 追蹤
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
    Thumbnail
    這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~