2023年11月2日 星期四

互動技術 Week08 ouob

Week08☀☀

week08-1

1.設變數vx、vy為加速度,一直更新x、y的值,形成往右下角移動


2.重力加速度,對vy的大小更改,對加速度vy+=重力的值(0.98),因初始vy是(負的)往上,但經過一直更新+=0.98,幾秒後會變成往下(vy變正)。


3.卡住y值,大於多少時,固定y值,形成邊界感。


4.將y的加速度在大於多少時改成負的並乘上小於1的值(小於1才會讓vy越來越小),做出球的彈跳。


5.一樣對加速度vx做乘上小於一的值,形成緩速感。


6.做出馬力歐的移動,背景用天藍色,地面用填充色土壤色填充一個四邊形,vx跟vy只在按下左右鍵後做數值的變更。






week08-2


1.按鍵放開時vx加速度歸0,移動就能走停了;加入當按下上鍵時,將y加速度便往上的20力,但因還沒加入重力或判斷限制y值範圍,所以馬力歐就往上飛了。


2.加入布林變數判斷是否在跳躍中,按下鍵盤上鍵時就true,同時flying是true時就會在draw函式裡不斷的對marioY做值的變換,在加marioY大於看似在地面上的值時,就flying設false,並固定marioY。


3.加入限制連跳的機制,在按下上鍵判斷時多判斷flying是否是false的狀態,是false才可以做加速度的改變跟做flying設成true。


4.寫boolean宣告的函式,傳入方塊的x、y、w、h,判斷如果marioX介於方塊的左右邊界內且marioY介於方塊的上下邊界內,就代表碰撞到(mario在方塊內),所以回傳true,其他回傳false;在draw呼叫該函式,當回傳true來時,就把加速度vy設0並把marioY設成固定的值。


week08-3


1.把函式裡判斷範圍的x與y左右跟上下邊界都拉長拉寬一點;在draw函式裡判斷碰到方塊的範圍時,再去做判斷加速度vy是否>0,大於0代表還在飛所以進到碰撞範圍時就把marioY設成方塊的y值再往上減少10半,同時flying設false,else的部分修改marioY設成150+20+10(方塊的y座標+方塊的大小+mario的身體一半值)。


2.再加一個布林函式判斷是否離開碰撞範圍,裡面的範圍判斷跟進入範圍的判斷相反,還要加一個布林變數判斷是不是站在方框上,當vy>0代表mario在方框上方(因為此時vy是往下的速度,所以為正值),同時設stand_box為true;加入判斷當是站在方框上時、不是跳躍時、而且離開函式為true時,把stand_box設回false、flying  = true、加速度vy=0(即mario往下掉)。

3.優化、改進程式碼,將下面判斷按下上鍵時多加一個把stand_box狀態設false;上面程式碼的關於方塊的部分包裝成函式,以便呼叫時只要修改x、y值就能簡單生成不同位置的方塊。

4.函式多呼叫幾次就簡單複製出很多份方塊(含偵測碰撞功能)



沒有留言:

張貼留言