Unity - Rigidbody 剛體物件

Author: Kelvin Huang

剛體元件 (Rigidbody) 可讓物件產生受重力影響,或是施加作用力而產生移動,透過物理引擎計算達到擬真的互動效果。

以下教學以製作簡易射擊遊戲說明 Rigidbody 剛體的使用方法,包括槍、子彈、靶的互動功能。

屬性 功能
Mass 物件的質量(單位:公斤)
Drag 根據力移動物體時影響物體的空氣阻力大小 ( 0 表示沒有空氣阻力)
Angular Drag

根據扭矩旋轉物體時影響物體的空氣阻力大小( 0 表示沒有空氣阻力)

注意!如果將 Angular Drag 屬性設為無限大,無法使物件停止旋轉。

Use Gravity 啟用時此物件將受重力影響。
Is Kinematic

啟用時此物件將物件將不會被實體引擎驅動,只能透過 Transform 進行操作。

對於移動平台,或者如果要動畫化附加了 HingeJoint 的剛體,可以使用此屬性。

   
Freeze Position 停止剛體沿著世界 X Y Z 軸 移動(選擇性)
Freeze Rotation 停止剛體圍繞局部 X Y Z 軸 旋轉(選擇性)

 

 

製作子彈

功能需求:子彈生成後自主向前移動,可設定推力以控制移動速度,碰撞後掉落或刪除。

建立空物件並命名為 Bullet 並套用 Rigidbody 剛體元件,關閉 Use Gravity 停用重力的影響。

建立 C# 腳本並命名為 "Bullet" 用撰寫子彈的腳本,

方法一、使用 RigidbodyAddForce 讓子彈向前移動。

方法二、使用 Rigidbody.Velocity 讓子彈向前移動。

將 Bullet 腳本附加到 Bullet 子彈物件。

 

為 Bullet 物件增加 Capsule 膠囊子物件,並調整到適當大小與旋轉角度。按下 Play 測試,確認子彈前進方向。

 

若需顯示子彈移動軌跡,附加 Trail Renderer 元件,設定材質並調整寬度。

新增 Bullet 標籤並套用到子彈,並拖曳到 Prefabs 資料夾轉成預製物件。

使用標籤可在稍後子彈擊中不同的物件時,製作不同的的互動效果與音效。

例如擊中玻璃時破碎、擊中牆壁時動態生成彈孔,擊中角色時置換為布娃娃角色。

 

製作槍物件

自行製作槍的模型,或是從資源商店搜尋,有不少免費的槍枝模型可下載。

建立一個空物件,重新命名 Muzzle 移到槍口的位置,用於動態生成子彈。

撰寫槍的腳本。建立一個 C# 腳本並命名為 "Gun" 然後附加到 Muzzle 物件。

將剛才的 Bullet 子彈預製物件拖曳到 Bullet Prefab 欄位。

 

製作靶物件

功能需求:被子彈擊中時發出音效,並掉落到地面。

建立空物件並命名為 "Target" 套用 Rigidbody 剛體元件,先關閉 Use Gravity 停用重力的影響。

套用 AudioSource 音效元件,設定子彈擊中的音效,取消 Play On Awake 自動播放。

建立一個 C# 腳本並命名為 Target 然後附加到 Target 靶物件。

測試遊戲,確認子彈擊中靶的互動效果。

 

相關教學

使用 Rigidbody 製作物件拖曳功能

 

 

Copyright © 2024 CG Digital Corp. All rights reserved.