Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1|回复: 0
打印 上一主题 下一主题

[CN]精准抛物线|Accurate Parabola

[复制链接]

189

主题

189

帖子

580

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
580
跳转到指定楼层
楼主
发表于 2017-7-13 16:03:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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)
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Comsenz Inc.  

GMT+8, 2026-10-26 07:03 , Processed in 0.212448 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表