下面是引用 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