< Return to Video

Physics Objects (Rigidbodies) - Unity Official Tutorials

  • 0:00 - 0:07
    在正常的情況下遊戲內所有會動的物件
    都應該帶是有剛體(Rigidbody)的物件
  • 0:07 - 0:11
    剛體是讓物件可以被物理所影響的元件
  • 0:11 - 0:13
    它允許遊戲物件能因重力而掉落
  • 0:13 - 0:17
    並帶有物理屬性像是
    質量(Mass)、阻力(Drag)和速度(Velocity)
  • 0:18 - 0:24
    當我們替一個遊戲物件加上剛體元件
    我們稱此遊戲物件為剛體物件
  • 0:24 - 0:28
    剛體是觸發所有物理行為的基本元件
  • 0:28 - 0:33
    除此之外該物件也必須有一個碰撞體
    才能夠與其它物理物件互動
  • 0:33 - 0:37
    如果我們的方體物件沒有附有剛體
    那它就會一直停留在半空中
  • 0:38 - 0:40
    替它加上剛體後看看會有甚麼改變
  • 0:40 - 0:42
    如同加入其他元件的方式
  • 0:42 - 0:47
    我們可從檢視下方的Add Component加入
    或從主選單上的Component加入
  • 0:47 - 0:49
    你可以在物理類別(Physics)找到剛體元件
  • 0:51 - 0:55
    現在我們的球體物件會因重力而掉落
    也可以被物理引擎所控制
  • 0:55 - 0:57
    或為它加入任何力量(Force)
  • 0:57 - 0:59
    剛體有許多選項設定
  • 1:00 - 1:04
    首先有遊戲物件的重量(Mass)
    線性阻力(Drag)和旋轉阻力(Angular Drag)
  • 1:04 - 1:08
    物件的重量影響物件碰撞的結果
  • 1:08 - 1:13
    重量輕的遊戲物件碰到重量重的物件時
    會產生較小的物理行為
  • 1:14 - 1:18
    線性阻力決定物件在沒有發生
    物理行為下停止移動的速度
  • 1:19 - 1:20
    可以把它想像成空氣阻力
  • 1:21 - 1:24
    它是用來計算線性速度的阻力值
  • 1:24 - 1:32
    旋轉阻力影響遊戲物件停止旋轉的速度
    可以決定物件旋轉的快與慢
  • 1:32 - 1:40
    舉例來說, 當物件加入扭力使物件旋轉
    旋轉阻力就會影響扭力並反應在旋轉速度上
  • 1:40 - 1:43
    剛體的下一個設定選項是重力
  • 1:44 - 1:47
    只要將重力(Use Gravity)打勾就可以開啟
  • 1:48 - 1:54
    重力的設定可以在主選單裡的
    Edit -> Project Settings -> Physics找到
  • 1:55 - 2:02
    重力的設定是一個三維的值
    而Y軸預設值是重力的實際值 -9.81
  • 2:02 - 2:07
    因為你可以在此調整全域重力
    所以你可以調出不同的環境效果
  • 2:07 - 2:13
    例如一個低重力的平台
    或是將重力放在不同的軸向的解謎遊戲
  • 2:13 - 2:19
    舉例來說, 我將重力的Z軸設定為5
  • 2:20 - 2:24
    然後你會看到方體物件飛向Z軸的方向
  • 2:26 - 2:31
    運動體(Is Kinematic)決定
    物件是否會被物理行為影響
  • 2:31 - 2:37
    一般來說, 物理引擎因為效能因素
    所以當場景被載入時
  • 2:37 - 2:41
    所有靜態物件(沒有附剛體的物件)
    只會被物理引擎檢查一次
  • 2:41 - 2:43
    但當你移動一個靜態物件時
  • 2:43 - 2:48
    物理引擎就必須要重新檢查所有的
    靜態物件來保持物理的準確性
  • 2:49 - 2:51
    這會使效能大幅下降
  • 2:51 - 2:57
    要避免這樣的問題可以使用運動體
    並透過Translate函式讓運動體移動
  • 2:58 - 3:03
    這樣物件就可以在不影響自己的情況下
    與其他物件產生物理行為
  • 3:03 - 3:08
    像是打磚塊遊戲裡的移動平台
  • 3:09 - 3:14
    在這個範例裡
    我們的方體物件啟用了重力
  • 3:14 - 3:17
    當我們開始播放後, 方體物件自然的往下掉落
  • 3:18 - 3:23
    我們的球體物件
    也和方體物件有同樣的設定
  • 3:25 - 3:33
    如果方體物件關閉了重力就不會往下掉
    但它還是會受到其他物件的物理影響
  • 3:33 - 3:38
    如果我們不想方體物件被其他物件物理所影響
    我們可以將Is Kinematic打勾
  • 3:42 - 3:47
    然後透過不斷的修改座標來移動它的位置
  • 3:47 - 3:49
    我們建立一個簡單的程式腳本
  • 3:49 - 3:55
    程式腳本內使用了Translate函式
    讓方體物件在每一幀都往前移
  • 3:57 - 4:02
    你可以看到方體物件在有剛體的情況下
    可以移動並與其他物件產生物理行為
  • 4:02 - 4:10
    因為方體物件不斷的向物理引擎回報座標
    而不是要物理引擎重新檢視整個場景
  • 4:11 - 4:15
    差值(Interpolate)與推算(Extrapolate)設定
    是用來解決物件的不規則位移
  • 4:15 - 4:19
    當你使用剛體進行移動時
    產生了些許的不規則位移
  • 4:19 - 4:24
    這個時候你可以使用差值設定
    利用上一幀的位置來進行平順的位移運算
  • 4:24 - 4:29
    而推算設定是預測
    下一幀的座標位置來進行平順的位移
  • 4:29 - 4:31
    接下來的剛體設定是碰撞的偵測類型
  • 4:31 - 4:34
    它包括了非連續性(Discrete)
  • 4:34 - 4:36
    連續性(Continuous)
    動態連續性(Continuous Dynamic)
  • 4:36 - 4:41
    除非你有遇到問題
    否則我們建議使用預設的非連續性設定
  • 4:41 - 4:46
    連續性設定是讓快速移動的物件
    能和靜態物件互動的設定
  • 4:46 - 4:52
    而動態連續性設定是讓快速移動的物件
    能和其他動態物件互動
  • 4:53 - 4:55
    剛體最後的設定叫約束(Constraint)
  • 4:55 - 5:01
    用來約束剛體元件限制
    物件對物理所產生的移動和旋轉行為
  • 5:01 - 5:05
    舉例來說, 俄羅斯方塊裡的方塊
    在掉落到底之前必須是可以旋轉的
  • 5:05 - 5:10
    這個時侯你就可以利用
    約束裡的旋轉設定來進行限制
  • 5:10 - 5:13
    在這範例裡, 我們的方體物件會往下掉
  • 5:13 - 5:20
    因為剛體有啟用了重力
    所以它掉落的感覺會像這樣
  • 5:20 - 5:26
    如果我們不希望他在掉落的過程中旋轉
    我們可以把Freeze Rotation都打勾
  • 5:27 - 5:30
    現在它掉落就不會旋轉了
Title:
Physics Objects (Rigidbodies) - Unity Official Tutorials
Description:

more » « less
Video Language:
English
Duration:
05:32

Chinese, Traditional subtitles

Revisions