作者azureblaze (AzureBlaze)
看板GameDesign
標題Re: [程式] 請問如何精準的計算2D子彈的移動
時間Fri Oct 28 14:00:31 2011
剛好之前有寫過
可是我覺得很難用所以拔掉了
屍體還在可是一些相關函數被我改掉了所以我不確定是否正確
式子的計算過程也被我搞丟了
基本上我是建議用更簡單偷懶的方式處理啦....
Lua code:
//變數幾乎都是向量
r = playerPos - pos //目標位置 - 自身位置
u = velo //目標速度
lr = r:Length()
lu = u:Length()
lv = 30; //子彈速度
a= lu * lu - lv * lv
b = -2 * lr *lu * math.cos( u:Angle(r)) //u:Angle(r)是u與r的夾角
c =lr * lr
delta = b * b - 4 * a * c
if delta < 0 then
return //不可能打中
end
delta = math.sqrt(delta)
t= (-b - delta) / (2*a)
v = (r * (1.0 / t) + u)
FireLinearBullet(pos,v:Angle(nil),lv,0,0,0,0)
// 發射位置,發射角度,子彈速度, .....
// v:Angle(nil)是 v對x軸的夾角
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.36.54.140
→ azureblaze:太久沒寫Lua, comment 應該是--不是// 10/28 14:01
→ azureblaze:到目標的向量 + 目標速度*時間 = 子彈速度*時間 10/28 14:07
推 InitialPower:感謝這位板友,還有付圖參考,我研究一下,成功的話 10/28 16:15
→ InitialPower:再來分享。 10/28 16:15