小屋創作

日誌2019-10-17 16:50

【教學】Unity 街機物理車 - 第五部份

作者:樂小呈

最後一部分!!
物理修正

第四部份

這一部分是在影片中 4: 40  -  5:10 的時候講解,我自己就不講解了


首先是移動阻力,現在的車子就跟在冰上一樣一直滑
所以要添加一個阻力讓車子可以停下
首先,添加一個變數,作為阻力的大小
(B - 1)


再來,新增一個函式
就跟旋轉一樣,都得要在懸吊接觸到地面時進行
(B - 2)


再再來,先到FixedUpdate調用
(沒為什麼,這一頁還有很多空間所以先放)
(B - 3)


回到PhysicsFixed()
因為是在平面上移動,所以只需要抵銷水平的向量
首先先取得Local的向量,再把向量Y軸歸零
然後再把要抵銷的Local向量轉回World
最後施反向的力,抵銷車子的速度
(B - 4)


回到編輯器!
執行!!
現在你的車子已經會自動煞車了~
煞車效率就看使用需求調整摟~
(C - 1)
//


在來是第2個修正
慣性效果修正,讓車子在加減速時會稍微傾斜
添加變數!
一個是傾斜大小,另一個是用來計算傾斜的~
(B - 5)


再回到PhysicsFixed()
首先是取得這禎與上禎得的inputPush差距 (要用速度差也可以)
在來是算速度比率
然後算出慣性扭矩,旋轉軸 * inputPush差距 * 速度比率 * 傾斜量
最後把慣性扭矩施回給物件
(B - 6)


記得到FixedUpdate()設置lastInputPush
(B - 7)


回編輯器,執行
現在車子再加減速時,就會產生輕微的傾斜~
(C - 2)
//


再再最後的部分,設置重心

直接用(rigidbody.centerOfMass)設置就好,記得他的位置得要是Local
這裡我就不示範了~

放模型的部分我就不教了
如果要讓輪子配合懸吊抖動的話,也有足夠的數據計算了


這個車子有幾個小問題
設定最大角速度,用(rigidbody.maxAngularVelocity)
是因為我不知道怎麼限制單一軸的角速度@@ (會的大佬麻煩教一下,霸拖)
這種方法可能會讓車子的一些行為不如預期,但不會嚴重到出現錯誤,應該
我錯了,大部分的問題都是這個引發的,抓地力不足也是它引發的
因為車輛轉向的角速度會稀釋掉翻轉的角速度
到底是哪裡有問題
之後找出修好再看是要更新還是再發一篇修正的,一定會發,但可能沒那麼快

還有
就是抓地力不太夠,不過這可以從懸吊那裏改
讓懸吊高度高於中間值時,向下施力,把車往下壓
這麼做可能感覺很不合邏輯,但玩家看不出來就沒差XD

還有
離開斜坡(跳台)的時候,速度會大量減弱
PushForce返回的bool改成 int
回傳有幾顆輪子(懸吊)有接觸到地面
然後讓汽車施的阻力乘上(接觸數量/輪子總數)
Hmm...感覺有好多問題是這個引發的
確定了,上面的問題都是這裡引發的,之候補個修正的教學,如果我忘了,提醒一下
不修了啦QAQ
我好廢

還有
懸吊判定會偵測到Trigger
只要在判斷中添加一條
!hit.collider.isTrigger
就行了

幹怎麼一堆問題QAQ

結語
幹我花了超多時間做這鬼東西…

1

3

LINE 分享

相關創作

Unity 學習心得 day 1

Brackeys回來了! 這次改教Godot

【學習】插件、多人和反向工程

留言

開啟 APP

face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】