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

如何用触发判断一定距离内巡逻和攻击

[复制链接]
发表于 2011-8-29 16:08:54 | 显示全部楼层 |阅读模式
怎么样用
IF/THEN/ELSE(多个动作)
这个动作来实现以下判断:
1、一定范围内的怪物是在巡逻状态中的,并且是周期性的不间断巡逻;
2、当我的单位接近其中的一个巡逻单位时,怎么样用这个IF/THEN/ELSE(多个动作)动作来判断接近的单位,然后对这个单位停止发布周期性的巡逻命令而改为发布攻击我的单位的命令;
3、如果我没有杀死这个单位,又怎么样让这个单位回到巡逻队列中?

以上的问题主在难在第二点了,这一段的距离和单位的判断要怎样才实现,用单位组似乎行不通,会把更远的单位也拉过来打架。
或者,有没有更好的方法实现?
发表于 2011-8-29 16:15:39 | 显示全部楼层

Re:如何用动作判断一定距离内巡逻和攻击

不知道你有没有用过巡逻(游戏时候的快捷键就是“P”)。发布巡逻命令的时候,单位会在自己的位置以及命令发布点之间来回巡视,并且自动攻击靠近的敌人,敌人死亡或者逃跑了之后,单位会继续在两个点间巡逻……
不过单位被眩晕之类的控制技击中后,似乎会停止巡逻,要解决的问题是怎样在单位停止之后重新发布这个巡逻才对……
回复

使用道具 举报

发表于 2011-8-29 16:15:54 | 显示全部楼层
我现在在火车上,到了再看吧
回复

使用道具 举报

 楼主| 发表于 2011-8-29 16:26:04 | 显示全部楼层
单位的巡逻是不会停的,因为我用了周期命令,唯一的难点是要解决在我方单位接近敌方单位一定距离的时候,怎么样使周期性命令无效,而且这个无效只是针对和我方单位在一定距离的那个敌对单位,并不是同时中止对所有敌对单位发布的巡逻命令。

谢LO
同时谢LS,从火车很累的

这是触发,用单位组判断两个单位距离没用,我设置到2500了,直接丢小兵在这个范围内跟敌对的相接近,触发依然运行。
SG02
    事件
        时间 - 每 5.00 秒触发事件
    条件
    动作
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                ((((属于 玩家1(红色) 的所有单位) 中随机选取的一个单位) 的位置) 和 (((属于 中立敌对 的所有单位) 中随机选取的一个单位) 的位置) 之间的距离) 小于 2500.00
            Then - 动作
                无动作
            Else - 动作
                单位 - 对 ((A01 <预设> 内属于 中立敌对 的所有单位) 中随机选取的一个单位) 发布 巡逻 命令到目标点: (A01 <预设> 内的随机点)
回复

使用道具 举报

发表于 2011-8-29 16:40:34 | 显示全部楼层
ls的动作错了

((((属于 玩家1(红色) 的所有单位) 中随机选取的一个单位) 的位置) 和 (((属于 中立敌对 的所有单位) 中随机选取的一个单位) 的位置) 之间的距离) 小于 2500.00
这个会随机选取单位,如果随机到的两个单位之间距离大于2500,触发就没有效果……

如果硬要这么做,应该是选取所有属于中立敌对的单位添加进单位组1
然后选取单位组1内的所有单位做动作
    设置单位组2为以选取单位为圆心半径为R的范围内,且满足匹配单位的所有者不是中立敌对的所有单位
    if
        单位组2中的单位数量为0
    then
        巡逻
    else
        无动作
回复

使用道具 举报

 楼主| 发表于 2011-8-29 17:14:46 | 显示全部楼层
SG02
    事件
        时间 - 每 5.00 秒触发事件
    条件
    动作
        单位组 - 添加 ((可用地图区域) 内属于 中立敌对 的所有单位) 内所有单位到 Unit01
        单位组 - 选取 Unit01 内所有单位做动作
            Loop - 动作
                设置 Unit02 = (半径为 1200.00 圆心为 ((选取单位) 的位置) 且满足 (((匹配单位) 的所有者) 不等于 中立敌对) 的所有单位)
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        (Unit02 中的单位数量) 等于 0
                    Then - 动作
                        单位 - 对 ((A01 <预设> 内属于 中立敌对 的所有单位) 中随机选取的一个单位) 发布 巡逻 命令到目标点: (A01 <预设> 内的随机点)


是这样吗?依然没有用呀,是不是我写错了?
回复

使用道具 举报

发表于 2011-8-29 17:22:16 | 显示全部楼层
看来你没有理解……

单位组 - 添加 ((可用地图区域) 内属于 中立敌对 的所有单位) 内所有单位到 Unit01
单位组 - 选取 Unit01 内所有单位做动作

后面的所有动作都是放在这个选取单位组里面做动作的,所以是对每个选取到的单位都做一次这个动作
所以你的最后一个动作发布的目标也是“选取单位”……
回复

使用道具 举报

 楼主| 发表于 2011-8-29 17:32:06 | 显示全部楼层
引用第6楼lo于2011-08-29 17:22发表的  :
后面的所有动作都是放在这个选取单位组里面做动作的,所以是对每个选取到的单位都做一次这个动作
所以你的最后一个动作发布的目标也是“选取单位”……

如果是这样的话,那么地图里的所有中立单位不就都往A01地区巡逻,这样的话,其他地区的中立单位就得不到控制了
回复

使用道具 举报

发表于 2011-8-29 17:38:59 | 显示全部楼层
对哦……似乎巡逻的目的地不一样哦……
我想想其他办法……
似乎可以用自定义值和数组变量把单位和区域绑定……
比如说命令选取单位移动到区域(单位的自定义值)
不过初始化这些自定义值和数组变量有点麻烦……
回复

使用道具 举报

 楼主| 发表于 2011-8-29 19:34:26 | 显示全部楼层
如果用单位接受伤害来作为判断条件,可否不用变量就能完美解决呢?回去后要试一下
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 16:05 , Processed in 0.049487 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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