[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:06.68,Default,,0000,0000,0000,,在正常的情況下遊戲內所有會動的物件\N都應該帶是有剛體(Rigidbody)的物件 Dialogue: 0,0:00:07.18,0:00:11.36,Default,,0000,0000,0000,,剛體是讓物件可以被物理所影響的元件 Dialogue: 0,0:00:11.36,0:00:13.36,Default,,0000,0000,0000,,它允許遊戲物件能因重力而掉落 Dialogue: 0,0:00:13.36,0:00:17.41,Default,,0000,0000,0000,,並帶有物理屬性像是\N質量(Mass)、阻力(Drag)和速度(Velocity) Dialogue: 0,0:00:17.91,0:00:23.81,Default,,0000,0000,0000,,當我們替一個遊戲物件加上剛體元件\N我們稱此遊戲物件為剛體物件 Dialogue: 0,0:00:24.13,0:00:28.34,Default,,0000,0000,0000,,剛體是觸發所有物理行為的基本元件 Dialogue: 0,0:00:28.34,0:00:33.06,Default,,0000,0000,0000,,除此之外該物件也必須有一個碰撞體\N才能夠與其它物理物件互動 Dialogue: 0,0:00:33.23,0:00:37.39,Default,,0000,0000,0000,,如果我們的方體物件沒有附有剛體\N那它就會一直停留在半空中 Dialogue: 0,0:00:37.60,0:00:39.60,Default,,0000,0000,0000,,替它加上剛體後看看會有甚麼改變 Dialogue: 0,0:00:39.83,0:00:41.68,Default,,0000,0000,0000,,如同加入其他元件的方式 Dialogue: 0,0:00:41.68,0:00:46.94,Default,,0000,0000,0000,,我們可從檢視下方的Add Component加入\N或從主選單上的Component加入 Dialogue: 0,0:00:47.12,0:00:49.12,Default,,0000,0000,0000,,你可以在物理類別(Physics)找到剛體元件 Dialogue: 0,0:00:51.13,0:00:55.13,Default,,0000,0000,0000,,現在我們的球體物件會因重力而掉落\N也可以被物理引擎所控制 Dialogue: 0,0:00:55.13,0:00:57.13,Default,,0000,0000,0000,,或為它加入任何力量(Force) Dialogue: 0,0:00:57.45,0:00:59.45,Default,,0000,0000,0000,,剛體有許多選項設定 Dialogue: 0,0:00:59.64,0:01:04.31,Default,,0000,0000,0000,,首先有遊戲物件的重量(Mass)\N線性阻力(Drag)和旋轉阻力(Angular Drag) Dialogue: 0,0:01:04.31,0:01:08.01,Default,,0000,0000,0000,,物件的重量影響物件碰撞的結果 Dialogue: 0,0:01:08.30,0:01:13.43,Default,,0000,0000,0000,,重量輕的遊戲物件碰到重量重的物件時\N會產生較小的物理行為 Dialogue: 0,0:01:13.67,0:01:18.27,Default,,0000,0000,0000,,線性阻力決定物件在沒有發生\N物理行為下停止移動的速度 Dialogue: 0,0:01:18.51,0:01:20.41,Default,,0000,0000,0000,,可以把它想像成空氣阻力 Dialogue: 0,0:01:20.63,0:01:24.21,Default,,0000,0000,0000,,它是用來計算線性速度的阻力值 Dialogue: 0,0:01:24.49,0:01:31.93,Default,,0000,0000,0000,,旋轉阻力影響遊戲物件停止旋轉的速度\N可以決定物件旋轉的快與慢 Dialogue: 0,0:01:32.20,0:01:40.11,Default,,0000,0000,0000,,舉例來說, 當物件加入扭力使物件旋轉\N旋轉阻力就會影響扭力並反應在旋轉速度上 Dialogue: 0,0:01:40.11,0:01:43.07,Default,,0000,0000,0000,,剛體的下一個設定選項是重力 Dialogue: 0,0:01:43.53,0:01:46.52,Default,,0000,0000,0000,,只要將重力(Use Gravity)打勾就可以開啟 Dialogue: 0,0:01:47.60,0:01:54.42,Default,,0000,0000,0000,,重力的設定可以在主選單裡的\NEdit -> Project Settings -> Physics找到 Dialogue: 0,0:01:55.12,0:02:01.56,Default,,0000,0000,0000,,重力的設定是一個三維的值\N而Y軸預設值是重力的實際值 -9.81 Dialogue: 0,0:02:02.03,0:02:06.88,Default,,0000,0000,0000,,因為你可以在此調整全域重力\N所以你可以調出不同的環境效果 Dialogue: 0,0:02:07.38,0:02:13.08,Default,,0000,0000,0000,,例如一個低重力的平台\N或是將重力放在不同的軸向的解謎遊戲 Dialogue: 0,0:02:13.18,0:02:18.66,Default,,0000,0000,0000,,舉例來說, 我將重力的Z軸設定為5 Dialogue: 0,0:02:20.00,0:02:24.13,Default,,0000,0000,0000,,然後你會看到方體物件飛向Z軸的方向 Dialogue: 0,0:02:25.90,0:02:30.92,Default,,0000,0000,0000,,運動體(Is Kinematic)決定\N物件是否會被物理行為影響 Dialogue: 0,0:02:31.11,0:02:36.97,Default,,0000,0000,0000,,一般來說, 物理引擎因為效能因素\N所以當場景被載入時 Dialogue: 0,0:02:36.97,0:02:41.20,Default,,0000,0000,0000,,所有靜態物件(沒有附剛體的物件)\N只會被物理引擎檢查一次 Dialogue: 0,0:02:41.20,0:02:43.20,Default,,0000,0000,0000,,但當你移動一個靜態物件時 Dialogue: 0,0:02:43.20,0:02:48.38,Default,,0000,0000,0000,,物理引擎就必須要重新檢查所有的\N靜態物件來保持物理的準確性 Dialogue: 0,0:02:48.62,0:02:50.62,Default,,0000,0000,0000,,這會使效能大幅下降 Dialogue: 0,0:02:51.05,0:02:57.28,Default,,0000,0000,0000,,要避免這樣的問題可以使用運動體\N並透過Translate函式讓運動體移動 Dialogue: 0,0:02:57.55,0:03:02.95,Default,,0000,0000,0000,,這樣物件就可以在不影響自己的情況下\N與其他物件產生物理行為 Dialogue: 0,0:03:03.23,0:03:08.02,Default,,0000,0000,0000,,像是打磚塊遊戲裡的移動平台 Dialogue: 0,0:03:08.75,0:03:13.78,Default,,0000,0000,0000,,在這個範例裡\N我們的方體物件啟用了重力 Dialogue: 0,0:03:14.15,0:03:17.42,Default,,0000,0000,0000,,當我們開始播放後, 方體物件自然的往下掉落 Dialogue: 0,0:03:18.24,0:03:23.35,Default,,0000,0000,0000,,我們的球體物件\N也和方體物件有同樣的設定 Dialogue: 0,0:03:24.65,0:03:32.78,Default,,0000,0000,0000,,如果方體物件關閉了重力就不會往下掉\N但它還是會受到其他物件的物理影響 Dialogue: 0,0:03:33.24,0:03:38.31,Default,,0000,0000,0000,,如果我們不想方體物件被其他物件物理所影響\N我們可以將Is Kinematic打勾 Dialogue: 0,0:03:42.14,0:03:46.83,Default,,0000,0000,0000,,然後透過不斷的修改座標來移動它的位置 Dialogue: 0,0:03:46.83,0:03:49.27,Default,,0000,0000,0000,,我們建立一個簡單的程式腳本 Dialogue: 0,0:03:49.27,0:03:54.55,Default,,0000,0000,0000,,程式腳本內使用了Translate函式\N讓方體物件在每一幀都往前移 Dialogue: 0,0:03:56.86,0:04:02.08,Default,,0000,0000,0000,,你可以看到方體物件在有剛體的情況下\N可以移動並與其他物件產生物理行為 Dialogue: 0,0:04:02.08,0:04:10.13,Default,,0000,0000,0000,,因為方體物件不斷的向物理引擎回報座標\N而不是要物理引擎重新檢視整個場景 Dialogue: 0,0:04:10.63,0:04:14.86,Default,,0000,0000,0000,,差值(Interpolate)與推算(Extrapolate)設定\N是用來解決物件的不規則位移 Dialogue: 0,0:04:14.99,0:04:19.22,Default,,0000,0000,0000,,當你使用剛體進行移動時\N產生了些許的不規則位移 Dialogue: 0,0:04:19.22,0:04:23.83,Default,,0000,0000,0000,,這個時候你可以使用差值設定\N利用上一幀的位置來進行平順的位移運算 Dialogue: 0,0:04:23.83,0:04:29.37,Default,,0000,0000,0000,,而推算設定是預測\N下一幀的座標位置來進行平順的位移 Dialogue: 0,0:04:29.37,0:04:31.09,Default,,0000,0000,0000,,接下來的剛體設定是碰撞的偵測類型 Dialogue: 0,0:04:31.09,0:04:33.53,Default,,0000,0000,0000,,它包括了非連續性(Discrete) Dialogue: 0,0:04:33.53,0:04:35.53,Default,,0000,0000,0000,,連續性(Continuous)\N動態連續性(Continuous Dynamic) Dialogue: 0,0:04:36.08,0:04:40.54,Default,,0000,0000,0000,,除非你有遇到問題\N否則我們建議使用預設的非連續性設定 Dialogue: 0,0:04:41.12,0:04:46.05,Default,,0000,0000,0000,,連續性設定是讓快速移動的物件\N能和靜態物件互動的設定 Dialogue: 0,0:04:46.32,0:04:52.39,Default,,0000,0000,0000,,而動態連續性設定是讓快速移動的物件\N能和其他動態物件互動 Dialogue: 0,0:04:52.97,0:04:54.85,Default,,0000,0000,0000,,剛體最後的設定叫約束(Constraint) Dialogue: 0,0:04:54.85,0:05:00.85,Default,,0000,0000,0000,,用來約束剛體元件限制\N物件對物理所產生的移動和旋轉行為 Dialogue: 0,0:05:00.85,0:05:04.85,Default,,0000,0000,0000,,舉例來說, 俄羅斯方塊裡的方塊\N在掉落到底之前必須是可以旋轉的 Dialogue: 0,0:05:04.85,0:05:09.50,Default,,0000,0000,0000,,這個時侯你就可以利用\N約束裡的旋轉設定來進行限制 Dialogue: 0,0:05:10.19,0:05:13.46,Default,,0000,0000,0000,,在這範例裡, 我們的方體物件會往下掉 Dialogue: 0,0:05:13.46,0:05:19.100,Default,,0000,0000,0000,,因為剛體有啟用了重力\N所以它掉落的感覺會像這樣 Dialogue: 0,0:05:20.30,0:05:26.05,Default,,0000,0000,0000,,如果我們不希望他在掉落的過程中旋轉\N我們可以把Freeze Rotation都打勾 Dialogue: 0,0:05:26.55,0:05:29.82,Default,,0000,0000,0000,,現在它掉落就不會旋轉了