作者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
1F:→ azureblaze:太久没写Lua, comment 应该是--不是// 10/28 14:01
2F:→ azureblaze:到目标的向量 + 目标速度*时间 = 子弹速度*时间 10/28 14:07
4F:推 InitialPower:感谢这位板友,还有付图参考,我研究一下,成功的话 10/28 16:15
5F:→ InitialPower:再来分享。 10/28 16:15