找回密码
 点一下
查看: 1380|回复: 10

有什么比较好的多个单位不同路线巡逻的方法?

[复制链接]
发表于 2010-8-31 12:28:28 | 显示全部楼层 |阅读模式
想问问有什么比较好的群体巡逻方法
许多单位在不同位置巡逻
例如同时有4个或者更多的单位个不同的地方巡逻移动
A-B-A
C-D-C
E-F-E
G-H-G
用过单位的巡逻命令,但是好像很容易巡逻单位走着走着就不动了。。
还有用单位进入区域下达移动命令的办法,触发量好像又太多了~
我现在用每几秒就选取区域内单位巡逻到指定点的方法
例如这样
[trigger]
BarricadeMove 08
    事件
        时间 - AreaEffectTimer[5] 到期
    条件
    动作
        Set BarricadeMoveUnitGroup = (Barricade Partol01 08 <预设> 内满足 (((匹配单位) 的类型) 等于 激流阻隔器 (移动)) 的所有单位)
        单位组 - 选取 BarricadeMoveUnitGroup 内所有单位做动作
            Loop - 动作
                单位 - 对 (选取单位) 发布 巡逻 命令到目标点: BarricadeMovePoint[2]
        单位组 - 删除 BarricadeMoveUnitGroup
        Set BarricadeMoveUnitGroup = (Barricade Partol04 08 <预设> 内满足 (((匹配单位) 的类型) 等于 激流阻隔器 (移动)) 的所有单位)
        单位组 - 选取 BarricadeMoveUnitGroup 内所有单位做动作
            Loop - 动作
                单位 - 对 (选取单位) 发布 巡逻 命令到目标点: BarricadeMovePoint[3]
        单位组 - 删除 BarricadeMoveUnitGroup
[/trigger]
想了解下还有没有更好的办法设置群体巡逻
还有更复杂的巡逻路线= =
如A-B-C-B-A
貌似触发里没有SHIFT+P的命令啊~~
发表于 2010-8-31 16:29:51 | 显示全部楼层
没shift的模拟方法,除非丢失指令列队,最好的方法还是一处处发布命令,不考虑效率可以合并触发。
回复

使用道具 举报

发表于 2010-8-31 16:46:16 | 显示全部楼层
为何要用计时器呢?
用TD图里最传统的进入区域事件就可以啊
回复

使用道具 举报

 楼主| 发表于 2010-8-31 16:53:47 | 显示全部楼层
引用第2楼Conflux于2010-08-31 16:46发表的  :
为何要用计时器呢?
用TD图里最传统的进入区域事件就可以啊
主要是这样就要设置大量单位进入区域后移动的触发~
所以才想找有没有精简触发的办法
不过如果没有捷径的话那还是只能一个一个设置了
PS:我不是要做TD图
是做类似机关图的东西
回复

使用道具 举报

发表于 2010-8-31 17:39:31 | 显示全部楼层
引用第3楼海蜜于2010-08-31 16:53发表的  :

主要是这样就要设置大量单位进入区域后移动的触发~
所以才想找有没有精简触发的办法
不过如果没有捷径的话那还是只能一个一个设置了
PS:我不是要做TD图
.......
红色的没明白...
怎么会有大量的呢?
回复

使用道具 举报

发表于 2010-8-31 18:18:38 | 显示全部楼层
一点也不多。
有规律的巡逻的话。
回复

使用道具 举报

 楼主| 发表于 2010-8-31 18:56:26 | 显示全部楼层
引用第4楼Conflux于2010-08-31 17:39发表的  :

红色的没明白...
怎么会有大量的呢?
=。=就是一个区域内有不同单位在不同的地方巡逻,假如巡逻的单位数量和路线超过50,单纯用单位进入区域岂不是要至少100条触发=。=
回复

使用道具 举报

发表于 2010-8-31 19:24:57 | 显示全部楼层
如果交叉的话,可以根据单位类型一类的东西来决定下一个路径
简便一点,比如有20个路线转折的点
同时有20个区域
然后定义4个实数数组分别确定每个区域的范围X1,X2,Y1,Y2这四个值是区域的范围
对应每个区域一组存在数组中
另外定义一个点数组,分别对应区域的中心
然后对全部的20个区域创建同一个触发的事件,进入XX区域

然后循环判定单位所处的区域
然后根据单位类型,自定义值等数据决定下个去的目标
哦,这个要做二维数组了,
如果1.24的话,用hashtable来做,一个key为单位类型在全部单位组的序号
另外的一个为区域序号
当然这样设置值麻烦些,如果用数组也是一样的,就是不要超过8192
恩,然后发布移动到点数组序号为根据hashtable获得的序号即可
回复

使用道具 举报

发表于 2010-8-31 19:29:23 | 显示全部楼层
嗯,用上楼上这些东西就更省事了。
其实相比纯T,用jass很偷懒了
回复

使用道具 举报

 楼主| 发表于 2010-9-1 09:25:39 | 显示全部楼层
引用第7楼疯人¢衰人于2010-08-31 19:24发表的  :
如果交叉的话,可以根据单位类型一类的东西来决定下一个路径
简便一点,比如有20个路线转折的点
同时有20个区域
然后定义4个实数数组分别确定每个区域的范围X1,X2,Y1,Y2这四个值是区域的范围
对应每个区域一组存在数组中
.......
好复杂= =
不过谢谢了
我去研究下怎么制作
虽然很想不厚道的问下有没有样板让我学习一下XD
回复

使用道具 举报

发表于 2010-9-1 12:58:07 | 显示全部楼层
说白了就是根据当前区域和单位身上的数据决定下一个移动方向
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 09:39 , Processed in 0.032300 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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