找回密码
 点一下
查看: 1073|回复: 9

如何制作战机盘旋的效果

[复制链接]
发表于 2011-5-16 10:14:29 | 显示全部楼层 |阅读模式
如果玩过地球帝国就知道那里面的所有战斗机/轰炸机都是模仿真实世界内的飞机,在攻击和防御时都会围绕一个点盘旋,也就是说移动速度在每个时刻都不会为0而接近于最大移动速度了。但是魔兽里面的飞行机器和所有其他单位的移动攻击方式一样。

因此求助如何让一个单位在攻击时围绕攻击单位盘旋,移动到某个指定目标地点后也不是停下来,而是围绕该点盘旋?
发表于 2011-5-16 11:05:44 | 显示全部楼层
一:蝗虫群

二:触发命令单位在攻击完成后移动。

三:修改转身速度和转身角度。
s.w3x (9 KB, 下载次数: 8)

方法二最佳,但最复杂,由于不知道你的具体要求,我就不做演示了。
回复

使用道具 举报

 楼主| 发表于 2011-5-16 11:26:56 | 显示全部楼层

回 1楼(希瓦) 的帖子

蝗虫群,LS的意思是把小飞机当作蝗虫来处理吗?这样是不能被攻击的

方法三就是演示吧,可惜当命令发布的点不在盘旋区内就会盘旋之后飞过去然后停止下来。怎么让他到达目标之后继续盘旋?因为我感觉不知道怎么捕捉飞机到达目标点的这个动作。
回复

使用道具 举报

发表于 2011-5-16 12:54:17 | 显示全部楼层
捕捉攻击不就可以了。

你可以搜索“蝗虫群”看看模拟蝗虫群的演示。
回复

使用道具 举报

 楼主| 发表于 2011-5-16 12:59:38 | 显示全部楼层

回 3楼(希瓦) 的帖子

貌似没搜索到么,不知道你指的是哪个帖子。

现在不是捕捉攻击的问题,是怎么捕捉飞机停了下来。因为飞机如果目标设在比较远的地方,飞过去还是会停住,不考虑攻击的话。
回复

使用道具 举报

发表于 2011-5-16 13:48:39 | 显示全部楼层
回复

使用道具 举报

发表于 2011-5-16 18:53:50 | 显示全部楼层
原来我也尝试过,用了各种办法,不过大都效率不高,大致想法是每次发出指令后就用for循环每时间间隔不断检测是否到达目标点周围的小范围内,如果到达则向左或向右转向小角度并发出移动固定距离的指令,但这样的飞行轨迹类似于“p”或者“q”,目标点是直线与圆形的切点。如果要求把目标点作为圆周中心,那也太困难了,需要进行入轨,还要考虑好从哪个位置进入轨道。
是要做很多飞机还是少数几架?如果只有一架那真是太容易了,可以设置各种变量完全跟踪该飞机的所有情况,包括目的地等。如果是要批量生产飞机,那会麻烦许多,最好找个简单点的办法。
多余地插一句,一般飞行器只要能在目标附近的空中盘旋就行了吧,没必要在攻击时一定要围绕攻击目标旋转吧,除非是AC130幽灵炮艇机这种侧射机。
回复

使用道具 举报

发表于 2011-5-16 20:17:35 | 显示全部楼层
刚才看了一下,我是给大型运输机制作的盘旋效果,因为是运输机,不需要作战,所以相对简单,用的是个土办法,就是一旦发出移动指令,就用触发再向目标点施放一个施法距离超短的点目标技能,这样一旦检测到施放技能,就知道飞机到地方了,就再发出新的转向移动指令,使飞机永远移动。
还有个被我抛弃的办法,貌似也能用,就是用上飞机的单位自定义值,这样就省得申请变量了,当然这样的前提是自定义值没有被占用完成别的功能。
简单地说就是用自定义值作为倒数计时器,飞机的速度一般都是固定的,所以计时也就是记录里程。每次发布运动指令时用目标点和当前位置之间的距离除以某个常数得到倒数计时器的数目,然后用触发每隔短时间就让所有飞机的自定义值减1,并检查所有飞机的自定义值,如果小于等于某个设定的低值则表明飞机已经到达目的地,于是向其发出新的转向移动指令。
一般来说距离检测都是距离小于一定数值即认为到达目的地;刚才提到的自定义值因是整数,在计算中也会有取整。这些都会带来误差,我记得我的飞机原地盘旋了很久之后圆心发生了偏移,还好移动不多,要看你是否能接受这些误差了。
以上两种方法都可以用于多架飞机,其实设置变量的方法适用于一切,实在没法时你可以设置一些大数组变量,把每个飞机“登记”进来,飞机损毁则清空其变量,飞机生产则按顺序寻找空闲变量将其填进去。这样监控其所有飞机的信息,然后周期事件检查。理论上没有问题。一般来说地图上的飞机也不会无限增加下去,应该不会溢出。只是我个人比较厌恶这种固定数组大小的办法,才疏学浅,也不知魔兽有没有申请动态变量的办法。
至于有战斗的情况,其实只是把移动指令的检测和发布扩展到攻击等更多的指令而已,应该也不难,但还是建议再回顾一下现实中的战机作战方式。一般来说战机在发动攻击时也是保持原有移动状态的,所以我的建议是你要么让战机打完就转向,保持运动不间断,要么就是完全更改打击方式,让飞机能够不发出指令就实施攻击,以下是我想到的几种:
战机发射对目标导弹,如反坦克和空空导弹,则飞机必须要停下运动施放技能,必然有极短的间断,但可用触发在施放后立即恢复运动。
如果要求战机在运动中发动对某确定位置的打击,类似激光制导炸弹,则可以使用类似咆哮等之类的技能,无目标,释放时不停止运动,并在释放前用鼠标指引位置,施放时在飞机处创造一个导弹单位,让该导弹向目标区域施放自爆工兵技能,或者搜索区域内敌方单位后实施自爆蝙蝠技能。
如果是传统的地毯式轰炸作战,可以使用类似献祭之类的技能调整飞机的状态,开启技能时对飞机下方区域实施打击,方法很多,可以直接触发选取并“伤害单位”,也可以创造单位。同样,也可以对飞机前方或侧面的特定位置处实施打击,“伤害区域”,这类似于攻击机或者空中炮艇机,但缺点是打击位置相对飞机是固定的,现实中飞机的武器调整和飞机自身的俯冲等都不能实现,而且没有射弹图像,除非用马甲单位等复杂手段实现。以上方法也不会打断飞机的运动。
当然还有个非常简单的办法,就是凤凰火焰技能,根本无须费心,可以带射弹图像自动寻找敌方单位发动攻击,非常适合攻击机和空中炮艇机。缺点是全方向打击,现实中一般飞机无法后向射击和发射导弹,炮艇机的部分重炮也只能打击左方一定范围内的敌人,而凤凰火焰似乎触发捕捉不到,那就看楼主的要求高不高了。

楼主既然都已经模拟到了飞机盘旋这个层面,该不会还要模拟飞机的着陆和入库吧?那就更复杂了。我的感觉是,经历了这么多复杂的设置,不但自己费劲,玩家对于飞机要起落装弹也会觉得很麻烦。现实中的飞机航程很远,远超一张地图的范围,可游戏能模拟出起降,却没有办法同样模拟射程和航程,结果往往是直升机满天转悠,飞机却要进进出出。没办法,游戏不可能均衡地模拟所有现实,有些方面也不用太苛求自己了。
回复

使用道具 举报

发表于 2011-5-20 14:07:56 | 显示全部楼层
膜拜下7楼。。。
回复

使用道具 举报

发表于 2011-5-20 22:10:51 | 显示全部楼层
膜拜下7楼……
其实一般的仿就可以了,高仿什么的太难……盘旋什么的,真正战斗不会这么用吧,除非是空战,战机之间互相盘旋,占据优势位置;或者是降落的时候,没排上队的盘旋了先……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-11-24 13:20 , Processed in 0.064545 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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