设为首页收藏本站新闻投稿

MOD中国同盟社

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 709|回复: 15

[求助] [插件]火箭飞行轨迹怎样设置? [复制链接]

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2012-5-30 19:15:24 |显示全部楼层
本帖最后由 水蛭 于 2012-5-30 19:19 编辑
复制代码
  1. public fw_MissileThink(ent)
  2. {
  3.         if (!pev_valid(ent)) return

  4.         new class[33]
  5.         pev(ent, pev_classname, any:class, any:32)
  6.         if (!equal(class, "rpg_missile")) return

  7.         new id = entity_get_edict(ent, EV_ENT_owner)

  8.         new Float:vec[3]
  9.         velocity_by_aim(ent, 800, vec)
  10.         set_pev(ent, pev_velocity, any:vec)

  11.         new org[3], Float:org2[3]
  12.         if (is_user_alive(id) && g_haswpn[id] && get_user_weapon(id)==CSW_AWP)
  13.         {
  14.                 get_user_origin(id, org, 3)
  15.                 org2[0] = float(org[0]), org2[1] = float(org[1]), org2[2] = float(org[2])
  16.                 aim_origin(ent, org2)//瞄准坐标
  17.         }

  18.         set_pev(ent, pev_nextthink, any:(get_gametime()+0.01))
  19. }
复制代码


总的来说就是想让火箭有一个拐弯的幅度。现在这个火箭飞向玩家瞄准的坐标,所以转弯是直接360°无压力……
现在转弯的度数要怎么办?

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2012-5-31 17:38:41 |显示全部楼层
本帖最后由 DSHGFHDS 于 2012-5-31 17:43 编辑

0 0不用engine了,有长进.但我还是见到get_user_origin如此猥琐的函数

new Float:fVelocity[3], Float:fAngle[3]
pev(iEntity, pev_velocity, fVelocity)
vector_to_angle(fVelocity, fAngle)
set_pev(iEntity, pev_angles, fAngle)
欢迎加入讨论群 164384320

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2012-5-31 18:17:20 |显示全部楼层
本帖最后由 水蛭 于 2012-5-31 18:18 编辑
DSHGFHDS 发表于 2012-5-31 17:38
0 0不用engine了,有长进.但我还是见到get_user_origin如此猥琐的函数

new Float:fVelocity[3], Float:fAn ...

我说哪里猥琐了……
还有你的那个不理解……不还是能够无限制转弯吗?
对了这个是瞄准坐标
  1. stock aim_origin(ent, Float:origin[3])
  2. {
  3.         static Float:org[3], Float:vec[3], Float:ang[3], Float:num
  4.         pev(ent, pev_origin, any:org)

  5.         vec[0] = origin[0] - org[0]
  6.         vec[1] = origin[1] - org[1]
  7.         vec[2] = origin[2] - org[2]

  8.         num = 800.0/vector_length(vec)
  9.         vec[0] *= num, vec[1] *= num, vec[2] *= num/-1.0

  10.         vector_to_angle(vec, ang)
  11.         set_pev(ent, pev_v_angle, any:ang)
  12.         ang[0]/=-1.0
  13.         set_pev(ent, pev_angles, any:ang)
  14. }
复制代码


使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2012-5-31 21:54:47 |显示全部楼层
本帖最后由 DSHGFHDS 于 2012-5-31 21:55 编辑

不理解?pev_velocity获取实体速度,vector_to_angle是根据速度的方向来设置角度,意思是,你的实体往那个方向运动,他的角度就对着哪个方向
欢迎加入讨论群 164384320

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2012-5-31 21:56:39 |显示全部楼层
本帖最后由 DSHGFHDS 于 2012-5-31 21:57 编辑

哥哥给个叼爆的函数你

stock get_aim_origin_vector(iPlayer, Float:forw, Float:right, Float:up, Float:vStart[])
{
new Float:vOrigin[3], Float:vAngle[3], Float:vForward[3], Float:vRight[3], Float:vUp[3]

pev(iPlayer, pev_origin, vOrigin)
pev(iPlayer, pev_view_ofs, vUp)
xs_vec_add(vOrigin, vUp, vOrigin)
pev(iPlayer, pev_v_angle, vAngle)

angle_vector(vAngle, ANGLEVECTOR_FORWARD, vForward)
angle_vector(vAngle, ANGLEVECTOR_RIGHT, vRight)
angle_vector(vAngle, ANGLEVECTOR_UP, vUp)

vStart[0] = vOrigin[0] + vForward[0] * forw + vRight[0] * right + vUp[0] * up
vStart[1] = vOrigin[1] + vForward[1] * forw + vRight[1] * right + vUp[1] * up
vStart[2] = vOrigin[2] + vForward[2] * forw + vRight[2] * right + vUp[2] * up
}
欢迎加入讨论群 164384320

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2012-6-1 05:50:22 |显示全部楼层
DSHGFHDS 发表于 2012-5-31 21:56
哥哥给个叼爆的函数你

stock get_aim_origin_vector(iPlayer, Float:forw, Float:right, Float:up, Float: ...

实际上这个函数也见过。
不过我还是想保留实体向玩家瞄准的坐标飞行的功能。
但是我写的那个转弯太快了,什么角度都转的过来。

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2012-6-1 07:00:12 |显示全部楼层
你咋就不去试试这个呢
new Float:fVelocity[3], Float:fAngle[3]
pev(iEntity, pev_velocity, fVelocity)
vector_to_angle(fVelocity, fAngle)
set_pev(iEntity, pev_angles, fAngle)
欢迎加入讨论群 164384320

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2012-6-1 17:06:26 |显示全部楼层
DSHGFHDS 发表于 2012-6-1 07:00
你咋就不去试试这个呢
new Float:fVelocity[3], Float:fAngle[3]
pev(iEntity, pev_velocity, fVelocity)

因为这个不会向玩家瞄准的位置飞行。
就算我修改得到的fAngle也无法限制角度变化的大小。
毕竟连angle的值要填什么都不知道。

使用道具 举报

Rank: 7Rank: 7Rank: 7

帖子
565
精华
0
声望
2971 点
金币
52 Mold
被赞许
36 次
注册时间
2010-2-13
发表于 2012-6-1 17:08:21 |显示全部楼层
去看看Wutong的AT4怎么写的
欢迎加入讨论群 164384320

使用道具 举报

Rank: 10Rank: 10Rank: 10

帖子
1250
精华
0
声望
3577 点
金币
470 Mold
被赞许
45 次
注册时间
2010-7-13

可爱小猫

发表于 2012-6-1 17:19:16 |显示全部楼层
本帖最后由 水蛭 于 2012-6-1 17:22 编辑
DSHGFHDS 发表于 2012-6-1 17:08
去看看Wutong的AT4怎么写的

中国人写插件一般不带源码,死心了。
顺便,AT4是直射的,不会拐弯。

使用道具 举报

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

回顶部