Discuz! Board
标题:
[CN]精准抛物线|Accurate Parabola
[打印本页]
作者:
Jerry小坏
时间:
2017-7-13 16:03
标题:
[CN]精准抛物线|Accurate Parabola
by 小灰灰
//抛物线计算(攻击者,目标,角度)
public Poll_String2(ent, target, Float:anglesx)
{
new Float:org1[3], Float:org2[3]
new Float:k, Float:m, Float:n
pev(ent, pev_origin, org1)
pev(target,pev_origin, org2)
n = org1[0] - org2[0]
m = org1[1] - org2[1]
k = org1[2] - org2[2]
new Float:fkdist = (m*m) + (n*n)
new Float:ktwiceoffer
ktwiceoffer = org1[2] - org2[2]
k = floatabs(k)
new Float:Leveldistance = floatsqroot(fkdist)
new Float:shootangle=anglesx
new Float:shootroundangle=shootangle*3.1415926/180
new Float:cosshootangle=floatcos(shootroundangle)
new Float:tanshootangle=floattan(shootroundangle)
new Float:gravityaccelerate = get_pcvar_float(any_gravity)
new Float:objecttanangle = ktwiceoffer / Leveldistance
new Float:Maxanglespeed, Float:shootspeed
if(objecttanangle <=-tanshootangle)
{
}
else
{
new Float:dataone, Float:datatwo
dataone = Leveldistance / cosshootangle
datatwo = gravityaccelerate / (2 * (Leveldistance * tanshootangle + ktwiceoffer))
new Float:datathree = floatsqroot(datatwo)
shootspeed = dataone * datathree
}
return Float:shootspeed
}
创建的时候:
set_pev(ent, pev_gravity, get_pcvar_float(any_gravity) / 800.0)
投掷的时候:
new Float:org_enemy[3]
pev(enemy, pev_origin, org_enemy)
new Float:org_ent[3]
pev(ent, pev_origin, org_ent)
new Float:vec[3]
xs_vec_sub(org_enemy, org_ent, vec)
vector_to_angle(vec, vec)
vec[0] =-get_pcvar_float(tw_anges) //发射角度
new Float:flyspeed = Poll_String2(ent, enemy, get_pcvar_float(tw_anges))
angle_vector(vec, 1, vec)
xs_vec_mul_scalar(vec, flyspeed, vec)
set_pev(ent, pev_velocity, vec)
new Float:angles[3]
vector_to_angle(vec, angles )
set_pev(ent, pev_angles, angles)
复制代码
欢迎光临 Discuz! Board (https://esfbbs.foxnyx.top/)
Powered by Discuz! X3.2