創作內容

8 GP

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

作者:樂小呈│2019-10-16 19:22:49│巴幣:16│人氣:503
Unity 街機物理車 - 第二部份
懸吊施力、懸吊阻力

第一部份

這一部分是在影片中 2 : 10  -  3 : 10 的時候講解,我自己就不講解了
對…這一分鐘的內容要寫一篇,如果是真的要做的人,記得要先看過歐


繼續~

在編輯器
要對車輛施力,車輛得要具有物力性質
所以要給車子添加RigidBody~
屬性就像圖中一樣
所有的Drag 都會直接在計算中進行
而Collision Detection就不解釋
(A - 1)


回到腳本
添加一個Rigidbody變量
(B - 1)
//


SuspensionBounce() 的迴圈中,我們必須加入一條判斷
判斷懸吊有沒有接觸到地板
上次已經把懸吊偵測結果存在Bool裡了,直接使用就好
懸吊所有力算都要在裡面進行
(B-2)


施力的力道,回到國中物理
F = MA
M 的部分就是車輛質量,所以這裡直接從RigidBody取得
A 的話,因為懸吊是要向上施力的,所以就用Unity Grivaty.y - 9.81
施力的力道F 就用剛剛的MA
但是! 因為這是在每個懸吊上執行,所以施力量還得要除與懸吊數量
(B - 3)


再來就是對RrigidBody施力
首先先把施力力度乘上施力方向,因為車子會傾斜,所以方向是懸吊點朝上,而不是(vector3.up)
在來是施力,之力必須對著懸吊點施,而不是整個物體
所以要用(rigidbody.AddForceAtPosition())代替(AddForce())
(B - 4)


現在回到編輯器,執行
如果你的車子是傾斜的,那它應該會朝傾斜的方向滑
如果擺正,那它應該[浮]在原地不動(可能會有點浮點數誤差,但不影響)
(A - 2)
//

再回來腳本
就像影片中說到的,跟著懸吊的壓縮,改變懸吊的施力
先計算懸吊的壓縮比(總懸吊長 - 當前長度) / 總懸吊長
再來把懸吊的施力乘上壓縮比2
承2的原因是因為,它現在的施力最大值是9.81,只夠剛好撐住車輛
但要把車輛向上回推,得要有更大的力量! 而承2的話那它的靜止點會在中間
最後再更改施裡方向的算式,這樣施力的第一部份就完成了
(B - 5)


回到編輯器~~
在測試時可以把懸吊設長一點,效果會比較明顯
執行!!
然後你的車子就會開始跳舞(゚∀゚)
沒有的話你就把車子放高一點,往下丟~
(請注意: 懸吊點的位置不能在主體的碰撞盒外,避免懸吊點穿入地面)
(C - 1)
//


顯然這樣不對,所以現在來加一點修正
首先添加幾個變數
K是懸吊的強度(彈力係數?)
Demping是阻力,但不是你想的那種
(B- 6)


然後是結構(Struct) Suspensions
加入一個函式,不解釋
至於那個lastLenght是要用來算阻力的
(B - 7)


回到SuspensionBounce()的迴圈
添加一個零時變數,等等用來算阻力
(B - 8)


回到懸吊施力
用彈力公式來計算彈簧施力,至於公式是啥,就自己去Wiki看吧~
然後更新施力公式
(B - 9)


回到編輯器,執行!
現在你的懸吊會變得很彈,看起來就正常多了
效果不明顯的話可以把K調高
(請注意: 懸吊點的位置不能在主體的碰撞盒外,避免懸吊點穿入地面)
(C - 2)
(彈簧這部分可有可無,看使用需求)
//


然而彈簧是不會一直彈的
所以現在要來加上阻力,不過這也不是真正的阻力
只是在達成某個條件時減少施力量
首先加入兩個臨時變數,一個是懸吊的加速度方向,另一個是懸吊的施力方向
在來判斷懸吊的加速度方向懸吊的施力方向是否一致
一致的話,就把施力減掉阻力 - 達成某個條件時減少施力量
然後更改施力算式
最後再把suspensionLenght設給lastSuspensionLenght,給下一次計算用
(B - 10)


回到編輯器!
執行!!
現在就不會無盡的彈跳了
(請注意: 懸吊點的位置不能在主體的碰撞盒外,避免懸吊點穿入地面)
(C - 3)

完成!
第二部分完成!!
比較累的部分完成了,還好接下來移動計算還算輕鬆~

…1.2K個字,我打報告都沒這麼勤

第三部份



49大改版
好想玩( º﹃º )

引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4562121
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:Unity|遊戲開發|Unity3D

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

8喜歡★angus945 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:【教學】Unity 街機... 後一篇:【教學】Unity 街機...

追蹤私訊切換新版閱覽

作品資料夾

kkll7952全體巴友
+ 3月-4月遊戲製作進度+簡報分享(2024) + https://home.gamer.com.tw/creationDetail.php?sn=5919640看更多我要大聲說昨天17:39


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

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