Unity 街機物理車 - 第四部份
轉彎、轉彎修正
這一部分是在影片中 4: 10 - 4:40 的時候講解,我自己就不講解了
對…他只有講30秒,然後我花了好幾天做
//
然後再到Start()
設定最大角速度,會用這種方式限制
是因為我不知道怎麼限制單一軸的角速度@@ (會的大佬麻煩教一下)
這種方法可能會讓車子的一些行為不如預期,但不會嚴重到出現錯誤,應該
我錯了,大部分的問題都是這個引發的,抓地力不足也是它引發的
因為車輛轉向的角速度會稀釋掉翻轉的角速度
之後找出修好再看是要更新還是再發一篇修正的,一定會發,但可能沒那麼快
(B- 2)
接下來
建立一個函式,輸入一個Bool,這是之前PushForce回傳的
加入一條判斷,有沒有任何一顆輪子接觸到地面
所有計算都是只有符合條件才會進行
(B - 3)
//
開始計算!
首先是車子的數度比率,因為車子需要在有速度的情況下才能旋轉
(除非你要做坦克或一些黑科技載具,一樣看使用需求)
然後是計算旋轉速度
角速度跟inputTorque不解釋
至於為什麼要算上InptPush的原因,是因為rigidbody.velocity裡會包括角速度,所以車輛還是可以原地自轉(一樣看使用需求)
最再把速度乘上旋轉軸,然後對物體施以扭矩
設置ForceMode.Impulse是為了讓旋轉更靈敏,你也可試試用原本ForceMoe.force的會有什麼效果(看使用需求)
(B - 4)
回到編輯器
執行!
好,他現在會轉彎了
但顯然少了什麼
度的,他不會自動回正
//
再到RotateTorque()
開始方向修正的計算,這部分我一行一行解釋
首先是angularVelocity2Fixed,因為我們只需要抵銷左右的角速度,
也就是Local的Y軸,所以先把angularVelocity轉成Local
再來是angularDir2Fixed,就是取得旋轉方向,不知道誰是左誰是右沒關西
然後 fixedScale,是取得角速度的大小
angleFixed就是負的(旋轉軸乘上旋轉方向乘修正率乘速度大小)
最後再施扭矩給物體,抵銷角速度
(B - 7)
回到編輯器,執行
現在你的車子已經可以順暢移動了
最複雜的部份…呃
幹為什麼感覺很簡單啊,這部分我修超久诶
算了
下一部分會把剩下的物理修正完成