心得:自從之前封
弊一學期後,我終於回來了
因為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


我回來啦!! 謝謝大家