簡介
這篇延續第一章,我們來做一些Collider+Rigidbody的實驗,來看看怎樣可以產生物理碰撞、怎樣會穿透、怎樣可以Trigger。
No Collider No RigidBody
我們場景會有一個地板Plane預設給他一個Collider,接著新增一個Box(我們可控制的物件)先不賦予 碰撞器與剛體 ,最後新增一個Sphere(被碰撞物件)也不給碰撞器與剛體。下方是各物件物件設定圖。
接著我們可以按下Play來看看沒有加上碰撞器與剛體的實驗會是怎樣,當然就是Box與Sphere都浮在半空中,控制的Box去撞Sphere會穿透,如下方示意。
Add Collider No RigidBody
在這邊我們的Plane地面就在此不會新增或移除元件了,所以就只會顯示Box與Sphere的Inspector畫面。這邊我們就將兩個物件都加上Collider,Box就加Box Collider,Sphere就加Sphere Collider,可以注意的是當你加入碰撞器元件時他會將她的尺寸服貼的fit 3D物件。
诶! 還是會穿透過去也浮在半空中,跟沒加Collider狀態下是一樣的。
Add Collider Add RigidBody
這邊我們就把Box物件加上Rigidbody吧,看看是否還會一樣沒動靜,這邊我們就將重力選項打勾,質量設定1kg,阻力設定為0,試試看結果吧。
可以看到Plane與Box零距離了,因為重力+碰撞器的關係,Plane撐起了Box,另一方面,當Box與Sphere碰撞時,Box被Sphere撞開了。
但這邊出現了一個插曲,Box因為被撞後線到地底下了,這時候你回想上個篇章講到的物件在運動時會穿透,就要把Collider Detection選項換成Dynamic Continuous或是Continuous後,Box就不會陷入地板了。
Two Object Add Collider and RigidBody
假如我們想要做出Box與Sphere有完整的物理模擬效果,就把Sphere加上Rigidbody吧,並且把Collision Detection選Continuous Dynamic,效果如下所示。兩物體成功產生物理碰傳運算。
Add Collider Physics Material
這邊我們來實驗一下Physics Material在物理運動時候的差別,等等可以看看下方的示意比較一下有使用此物理係數跟未使用的不同,如下圖我們新增Box 的Physics Material(維持默認數值),與新增一個Sphere(摩擦力較小、彈跳值較大的值)。
可以發現Sphere變得跟撒尿牛丸一樣彈,而且被Box碰撞後Sphere自然滾動的距離變得比較遠。
Add Collider IsTrigger Disable and Enable
這邊我來來做另一個實驗,要寫上程式碼,我們先新增一個C# Script,Unity3D所使用的程式語言有兩種,C#與JavaScript,大部分的人都是用C#。
我們可以把程式碼也當成Unity的Component(元件)要掛載在場景物件裡面,首先先新增一個程式碼Create->C# Script,命名為SphereColliderTrigger,程式碼的名稱最好有意義,這個是要掛載在Sphere物件下。
選取到Sphere物件並Add Component,加入你剛剛創建的Script,記得要把Rigidbody先移除,並把Sphere Collider的Is Trigger打勾(enable)。
打開程式碼開始寫一些簡單的程式,我們把Sphere角色當成偵查者,而主動撞人在下圖程式碼函式中的(Collider other),撞人的也必須賦予Collider。而OnTrigger有三種偵測方式,Enter(剛碰撞時)、Stay(碰撞持續時間)、Exit(停止碰撞時)。
下圖程式碼中我講OnTriggerEnter()就好,裡面有個判斷式If(other.name == “Cube”),意思就是假如撞人的物件(other)名稱(name)叫做”Cube”(String資料形態要雙引號)就Debug.Log(“entered”)列印出訊號在UnityEditor中。而下方兩個Stay跟Exit判斷條件跟Enter一樣,Stay的還有多一個判斷式,就是物件碰撞停留的時間假如大於一個設定值則印出Staying。好我們看下圖二就可以看到程式碰撞狀態印出不同訊息。完成。
小結
本章結算是實驗篇,為了驗證Section 1 所提到的Collider與Rigidbody的應用,最後寫個簡單的程式來看看Collider中的IsTrigger怎樣跟程式碼運用,這邊我們整理一個Collider跟Rigidbody的關係表,可以讓大家更了解要怎樣才可以達到想要的成果。這主題的最後一個章節我們來講講比較複雜的Wheel Collider, 希望大家先了解基礎碰撞器與剛體後再去瞭解之。