|
|
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)
复制代码 |
|