请选择 进入手机版 | 继续访问电脑版

 找回密码
 点一下
查看: 3053|回复: 1

选取最近的单位

  [复制链接]
发表于 2011-4-5 13:16:59 | 显示全部楼层 |阅读模式
在这些年来~~有不少人都琢磨着什么选取最近的单位,今天心血来潮~所以做了个小小小教程

恩以上是废话,让我们开始教程吧

我们首先要有的变量:
1~2个用作记录距离的Real(实数)变量,在这个演示中,我们将这两个变量称为Distance[0]和Distance[1]
1个用作选取单位的Unit Group(单位组)变量,在这个演示中,我们将这个变量称为Group
1个用作记录单位的Unit(单位)变量,在这个演示中,我们将这个变量称为Unit
1个让单位组选取单位的Point(点)变量,在这个演示中,我们将这个变量称为Point[0]
1~2个判断距离的Point(点)变量,在这个演示中,我们将这个变量称为Point[0]和Point[1]
(有一个变量是公用的)

然后我们开始做触发器吧!~ 我们这次要选取一个最近技能释放单位的单位

首先我们设定技能释放单位的位置,用作判断距离和单位组选取单位
[trigger]设置 Point[0] = ((触发单位) 的位置)[/trigger]

再先选取单位
[trigger]设置 Group = (半径为 1000000000.00 圆心为 Point[0] 的圆范围内所有单位)[/trigger]

然后我们设定最短的距离为最大值
[trigger]设置 Distance[1] = 100000000.00[/trigger]

之后就选取Group里的单位了
[trigger]        单位组 - 选取 Group 内所有单位做动作
            Loop - 动作
                设置 Point[1] = ((选取单位) 的位置)

                -------- 设置选取单位到技能释放单位的距离 --------
                设置 Distance[0] = (Point[0] 和 Point[1] 之间的距离)
                -------- 判断是否比之前的最短距离更短 --------
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                    If - 条件
                        Distance[0] 小于 Distance[1]
                    Then - 动作
                        -------- 如果是的话将这段距离记录到最短距离 --------
                        设置 Distance[1] = Distance[0]
                        -------- 将最短距离的单位记录下来 --------
                        设置 Unit = (选取单位)
                    Else - 动作
                        -------- 如果不是的不会执行动作 --------
[/trigger]



完整的触发器
[trigger]
完整的触发器
    事件
    条件
    动作
        设置 Point[0] = ((触发单位) 的位置)
        设置 Group = (半径为 1000000000.00 圆心为 Point[0] 的圆范围内所有单位)
        设置 Distance[1] = 100000000.00
        单位组 - 选取 Group 内所有单位做动作
            Loop - 动作
                设置 Point[1] = ((选取单位) 的位置)
                设置 Distance[0] = (Point[0] 和 Point[1] 之间的距离)
                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 动作)
                    If - 条件
                        Distance[0] 小于 Distance[1]
                    Then - 动作
                        设置 Distance[1] = Distance[0]
                        设置 Unit = (选取单位)
                    Else - 动作
                点 - 清除 Point[1]
        点 - 清除 Point[0]
[/trigger]

教程到这里就结束了~88

评分

参与人数 1威望 +107 收起 理由
alexries + 107 原创奖励

查看全部评分

发表于 2011-4-7 22:01:03 | 显示全部楼层
vj里面有个来外写的sortUtils,这个库可以按自定义的标准排列单位,结构体数组等等,而且用的排序方法是现在理论最快的快速排序。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 20:42 , Processed in 0.170836 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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