Discuz! Board

标题: [CN]精准抛物线|Accurate Parabola [打印本页]

作者: Jerry小坏    时间: 2017-7-13 16:03
标题: [CN]精准抛物线|Accurate Parabola
by 小灰灰

  1. //抛物线计算(攻击者,目标,角度)
  2. public Poll_String2(ent, target, Float:anglesx)
  3. {
  4.         new Float:org1[3], Float:org2[3]
  5.         new Float:k, Float:m, Float:n
  6.         pev(ent, pev_origin, org1)
  7.         pev(target,pev_origin, org2)
  8.         n = org1[0] - org2[0]
  9.         m = org1[1] - org2[1]
  10.         k = org1[2] - org2[2]

  11.         new Float:fkdist = (m*m) + (n*n)
  12.         
  13.         new Float:ktwiceoffer
  14.         ktwiceoffer = org1[2] - org2[2]
  15.         
  16.         k = floatabs(k)
  17.         
  18.         new Float:Leveldistance = floatsqroot(fkdist)
  19.         new Float:shootangle=anglesx
  20.         new Float:shootroundangle=shootangle*3.1415926/180
  21.         new Float:cosshootangle=floatcos(shootroundangle)
  22.         new Float:tanshootangle=floattan(shootroundangle)
  23.         new Float:gravityaccelerate = get_pcvar_float(any_gravity)
  24.         new Float:objecttanangle = ktwiceoffer / Leveldistance
  25.         
  26.         new Float:Maxanglespeed, Float:shootspeed
  27.         
  28.         if(objecttanangle <=-tanshootangle)
  29.         {
  30.                
  31.         }
  32.         else
  33.         {
  34.                 new Float:dataone, Float:datatwo
  35.                 dataone = Leveldistance / cosshootangle
  36.                 datatwo = gravityaccelerate / (2 * (Leveldistance * tanshootangle + ktwiceoffer))
  37.         
  38.                 new Float:datathree = floatsqroot(datatwo)
  39.                
  40.                 shootspeed = dataone * datathree
  41.         }
  42.         
  43.         return Float:shootspeed
  44. }

  45. 创建的时候:
  46. set_pev(ent, pev_gravity, get_pcvar_float(any_gravity) / 800.0)


  47. 投掷的时候:
  48. new Float:org_enemy[3]
  49. pev(enemy, pev_origin, org_enemy)
  50.                
  51. new Float:org_ent[3]
  52. pev(ent, pev_origin, org_ent)
  53.                                        
  54. new Float:vec[3]
  55. xs_vec_sub(org_enemy, org_ent, vec)
  56.                                        
  57. vector_to_angle(vec, vec)
  58.                
  59. vec[0] =-get_pcvar_float(tw_anges) //发射角度
  60.                                        
  61. new Float:flyspeed = Poll_String2(ent, enemy, get_pcvar_float(tw_anges))
  62.                         
  63. angle_vector(vec, 1, vec)
  64. xs_vec_mul_scalar(vec, flyspeed, vec)
  65. set_pev(ent, pev_velocity, vec)
  66.                                 
  67. new Float:angles[3]
  68. vector_to_angle(vec, angles )
  69. set_pev(ent, pev_angles, angles)
复制代码





欢迎光临 Discuz! Board (https://esfbbs.foxnyx.top/) Powered by Discuz! X3.2