下面是引用 za08280714 於 2011-08-11 21:36 發表的 :
又來麻煩大大了.大大我又想到一個問題了.我試這更換ㄧ張有方向的圖.結果只有圖作拋物線.而圖的方向就沒變.要如何修改成[拋物線往上的時候是ㄧ張方向上的圖.拋物線往下的時候是ㄧ張方向下的圖.拋物線往右的時候是ㄧ張方向右的圖.碰到之後反彈是方向左邊的圖.左邊的圖在反彈到上面碰到之後變反彈下來又是一張往下的圖]依角度反彈換圖片方向.
拋物線瞬間某一時刻 的角度(Angle) 會 在 Sub local_clb_pos 中被調整
在這個 Sub 中加入判斷角度等於 什麼什麼 (例如 45~135 度是 上,135~225 度是左...要注意角度在程式中是 RAD 形式哦,要轉換的話可以用內建的 math_degtorad() 函數把 DEG 轉換到 RAD,要轉回來請自己設一個函數 )
的時候,就改變圖片
底下紅色字體標示的就是紀錄角度的變數 ang 在圖片被拋來拋去的時候(運動中),會改變的關鍵的一行
把改變圖片的 程式碼加入在附近即可,最好是用新的一個函數
Private Sub local_clb_pos(ByRef mode As Integer)
'----- Formula -----
'vx=vx
'vy=vy-(g*t)
'x=x0+(v0x*t)
'y=y0+(v0y*t)-(1/2*g*t^2)
'___________________
With pos
If mode = 0 Then 'Initial values
.ang = math_degtorad(listAng(stat_ang))
.ini_vx = .ini_v * Math.Cos(.ang) : .ini_vy = .ini_v * Math.Sin(.ang)
Else
.vx = .ini_vx
.vy = .ini_vy - (.g * passedTime)
.ang = Math.Atan(.vy / .vx) If .vx < 0 And .vy > 0 Then .ang = math_revang(0, .ang) If .vx < 0 And .vy < 0 Then .ang = .ang + Math.PI 'You may insert the new sub/function/codes here '--- Debug ---
Me.Text = "ang=" & .ang * 180 / Math.PI & " vx=" & .vx & " vy=" & .vy & " Delta y=" & (.vy * passedTime) - (0.5 * .g * (passedTime ^ 2))
'_____________
.x = .ini_x + (.ini_vx * passedTime)
.y = .ini_y + -((.ini_vy * passedTime) - (0.5 * .g * (passedTime ^ 2)))
End If
End With
End Sub