切換
舊版
前往
大廳
主題

【獨立開發日記:我回來啦】做個仿rigidbody2D 物理腳本#1

%%鼠 拒收病婿 | 2020-06-23 21:28:56 | 巴幣 34 | 人氣 401

心得:自從之前封一學期後,我終於回來了

因為unity rigidbody 2D數值怎麼調都不是我想要的,更奇怪的是用addForce做跳躍的話,常常要給很大的值才會跳起來。所以想自幹個仿2D rigidbody的物理腳本。

總之,展示一下目前做的效果:
有重力加速度,且碰到地板會依照數值(Force Drag)去展現回彈的效果。 (球會動是因為我在操作,但跟基本遊戲控制一樣上下左右+跳,其他仿物理效果是腳本在做的)
(6/21)



接下來是斜坡處理,會依照地板的斜度、摩擦力與自己的摩擦力去做旋轉與加速度。(人物不會選轉是因為有freeze rotation z 跟unity 的rigidbody一樣,球整顆白的也看不出旋轉效果)
(6/23)


接下來要做仿物體碰撞效果

(變數acceleration不會動是因為我不知道要怎麼用這個數值,其他的要碼效果像就好,要碼是用簡單國中公式推出來的 (沒讀高中....))

希望用這個腳本就可以取代collider 2D 和 rigidbody 2D(至少目前是這樣,但地板還是一定要有collider),不過運算成本我就還沒認真去比較了。

程式碼的話,我想做完個段落再丟上來,但基本概念就是:
先自動在物件腳底(抓sprite中心) 產生一個用來標記的空物件,以那個點為準去判斷有沒有碰到地面,以及有沒有陷入地面(如果地面不是平的,人物會走"進"斜坡中)。

沒碰到地面就以delta time為單位去做加速度。 v=at ,a=重力、t=delta時間。 delta我不知道中文該怎麼講,但就是微積分的概念(x。

陷入地面的話,就用個看不出來的數值去把人物拉上來。

斜坡的話:
用Ray往腳下射,取得地面的normal,再取得與(0,1)的角度差;如果地板collider是方形的話,算出來的角度會等於物件的z軸旋轉角度。 但地板若是多邊形,就得用算的了。

至於越斜滾越快的乘數,我是去Cross ((0,1),地板法線)。
cross的結果簡單來說,A向量與B向量中間的夾角越垂直,值越大,介於(-1~1)之間。
(我數學爛,數學系的拜託鞭小力點)



以上。


以下是這段時間畫的半成品爽圖:






建模練習:

(轉2D)





根本沒休息到但我還是很快樂


然後我好幾個月前做的遊戲贏了UCLA大學的Game jam

我回來啦!! 謝謝大家
送禮物贊助創作者 !
0
留言

創作回應

樂小呈
好久不見[e12]

好像不少 platform game都會自己算跳躍,用直接用物理真的不好控制[e8]
2020-06-23 22:29:34
%%鼠 拒收病婿
感謝! ((不過我都偷偷觀望你 [e5]

之前參加某個game jam就是用unity的rigidbody 2D和collider 2D做platform game,常常人物擦邊的時候會被地板邊角卡死。[e15]
2020-06-23 22:54:08
弓長子系
加油!期待遊戲的完成品出現!
2020-06-23 22:48:04
%%鼠 拒收病婿
感謝! 期望這款不能再翻船棄坑了[e17]
2020-06-23 22:54:41
悠閒紅茶
這、這個難不成就是傳說中的神的語言!
2020-06-23 23:34:59
%%鼠 拒收病婿
是另類的推理小說
2020-06-24 03:42:27
番薯先森
辛苦ㄌ!「
2020-06-23 23:38:48
%%鼠 拒收病婿
感謝[e16]
2020-06-24 03:43:17
追蹤 創作集

作者相關創作

更多創作