找回密码
 点一下
查看: 1061|回复: 15

随机创建可破坏物的位置问题

[复制链接]
发表于 2012-1-7 12:20:02 | 显示全部楼层 |阅读模式
未命名触发器 001
    事件
        时间 - 游戏开始 0.02 秒
    条件
    动作
        For循环整数A从 1 到 1000, (可破坏物 - 创建 岩石屏障 在 ((可用地图区域) 内的随机点) ,面向角度: (随机角度) 尺寸缩放: 1.00 样式: (随机整数,最小值: 0 最大值: 6))


问题1:这个触发会使岩石屏障重叠在一起,请问如何能他们隔开一定距离使它们不重叠在一起
问题2:如何使“单位1”半径250以内不放置岩石屏障
发表于 2012-1-7 13:38:44 | 显示全部楼层
不介意效率的话可以先创建单位,然后循环将单位删除并在单位位置创建岩石……
范围神马的就是单位的体积,要是没动什么手脚那么创建时会自动挤开~
回复

使用道具 举报

发表于 2012-1-7 14:17:13 | 显示全部楼层
[s:177]
楼上那会很卡吧

你做判断就好了,判断创建点之间的距离就行了。

第一创建的点不判断,之后循环数来判断与之前的点相比的距离。然后判断范围250之内有不有单位。
这个能直接把以上两个问题都能解决
回复

使用道具 举报

发表于 2012-1-7 15:04:41 | 显示全部楼层
可破坏物的话有简单的方法,不过地形装饰物不知道能不能能不能再触发器里捕捉到了……
回复

使用道具 举报

 楼主| 发表于 2012-1-7 15:23:21 | 显示全部楼层

回 3楼(lo) 的帖子

lo:可破坏物的话有简单的方法,不过地形装饰物不知道能不能能不能再触发器里捕捉到了…… (2012-01-07 15:04)
地图上没有装饰物,说吧。
回复

使用道具 举报

发表于 2012-1-7 16:07:19 | 显示全部楼层
set point = 可用地图区域内随机点
选取以point为中心范围100范围内的所有可破坏物做动作
    删除point
在point处创建岩石壁障
删除point

(唯一不确定的是在没有点的情况下可破坏物是不创建还是创建在地图中心,如果还是创建了的话,那就再增加一个判断用的整数吧,整数的判断用法和那个点一样……)
回复

使用道具 举报

发表于 2012-1-7 16:17:41 | 显示全部楼层
比起矩形区域 我倒是喜欢用极坐标位移来创建随机点

假设有两个可破坏物距离太近的话

选取第一个可破坏物周围一定距离的 不包括指定的那个可破坏物之内所有可破坏物做动作
  整数-选取的可破坏物大于或等于1
      删除指定的可破坏物
      创建一个可破坏物在随机点
      再次运行这个条件

问题2 的话可以用上面的套路
回复

使用道具 举报

 楼主| 发表于 2012-1-7 20:06:07 | 显示全部楼层

回 6楼(破喉咙) 的帖子

破喉咙:比起矩形区域 我倒是喜欢用极坐标位移来创建随机点

假设有两个可破坏物距离太近的话

选取第一个可破坏物周围一定距离的 不包括指定的那个可破坏物之内所有可破坏物做动作
....... (2012-01-07 16:17)
懂得意思,但我做不出来
回复

使用道具 举报

发表于 2012-1-7 20:26:24 | 显示全部楼层
不管懂不懂,试试猫咪的触发吧……
回复

使用道具 举报

 楼主| 发表于 2012-1-7 21:47:09 | 显示全部楼层
猫叔的我是看都看不懂……猫文好强大!
回复

使用道具 举报

 楼主| 发表于 2012-1-7 21:47:45 | 显示全部楼层
猫叔的我是看都看不懂啊!猫文好厉害!
回复

使用道具 举报

发表于 2012-1-7 22:02:21 | 显示全部楼层
不知道捕捉可破坏物的是什么组了 这里用单位和单位组代替喵~
触发器1
事件-
单位发动技能效果
条件-
XXX
动作-
删除dian1
设置变量dian1=触发单位的位置
循环整数a从1-100做动作
   删除dian2
   设置变量dian2=dian1的极坐标位移点 距离 随机实数 XX 到XX角度随机实数 0.00到360.00
   创建一个可破坏物在dian2
   把最后创建的单位添加到danweizu1
立即运行触发器2无视条件

触发器2
动作-
选取danweizu1里面的所有单位做动作
    设置变量danwei1=选取单位
    删除dian2
    设置变量dian2=dian1的极坐标位移点 距离 随机实数 XX 到XX角度随机实数 0.00到360.00
    立即移动danwei1到dian2
    删除dian3
    设置变量dian3=danwei1的位置
    删除danweizu3
    设置变量danweizu3=dian3周围半径XX范围的所有可破坏物
     当danweizu3里面的单位大于1的时候做动作
          把danwei1添加到danweizu2
          设置变量zhengshu=zhengshu+1
清除danweizu1里面的所有单位
当zhengshu不等于0的时候做动作
    立即运行触发器3无视条件
设置变量zhengshu=0

触发器3
动作-
选取danweizu2里面的所有单位做动作

    设置变量danwei1=选取单位
    删除dian2
    设置变量dian2=dian1的极坐标位移点 距离 随机实数 XX 到XX角度随机实数 0.00到360.00
    立即移动danwei1到dian2
    删除dian3
    设置变量dian3=danwei1的位置
    删除danweizu3
    设置变量danweizu3=dian3周围半径XX范围的所有可破坏物
    当danweizu3里面的单位大于1的时候做动作
          把danwei1添加到danweizu1
          设置变量zhengshu=zhengshu+1
清除danweizu2里面的所有单位
当zhengshu不等于0的时候做动作
    立即运行触发器2无视条件
设置变量zhengshu=0
回复

使用道具 举报

发表于 2012-1-7 22:26:47 | 显示全部楼层
破喉咙:不知道捕捉可破坏物的是什么组了 这里用单位和单位组代替喵~
触发器1
事件-
单位发动技能效果
条件-
....... (2012-01-07 22:02)
可破坏物木有组……
只有选取范围内可破坏物做动作。。
回复

使用道具 举报

发表于 2012-1-7 22:36:20 | 显示全部楼层

回 12楼(chyj4747) 的帖子

chyj4747:可破坏物木有组……
只有选取范围内可破坏物做动作。。 (2012-01-07 22:26) 
[s:166]难怪想不起来喵
回复

使用道具 举报

发表于 2012-1-9 23:33:13 | 显示全部楼层
[trigger]
对战初始化
    事件
        玩家 - 玩家1(红色) 按下Esc键
    条件
    动作
        设置 a = (新建区域)
        区域(不规则) - 对 a 添加 (可用地图区域)
        触发器 - 运行 未命名触发器 001 <预设> (无视条件)
[/trigger]

[trigger]
未命名触发器 001
    事件
        时间 - t 到期
    条件
    动作
        设置 p = ((可用地图区域) 内的随机点)
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                (a 内包含点: p) 等于 TRUE
            Then - 动作
                设置 i = (i + 1)
                设置 b = (以 p 为中心,宽 200.00 ,高 200.00 的矩形区域)
                可破坏物 - 创建 岩石屏障 在 p ,面向角度: (随机角度) 尺寸缩放: 1.00 样式: 0
                区域(不规则) - 在 a 中移除 b
                区域(矩形) - 删除 b
            Else - 动作
        点 - 清除 p
        如果所有条件成立则做动作1,否则做动作2
            If - 条件
                i 小于或等于 1000
            Then - 动作
                计时器 - 开启 t ,计时方式: 一次性 时间设置: 0.00 秒
            Else - 动作
[/trigger]

嗯……其实发上面的东西只是为了掩盖自己想水的目的而已
  
真正想说的是
明明“选取可破坏物做动作"这东西不给填条件
但是却偏偏在可破坏物里找到了“匹配的可破坏物”这东西


--------------------------------------------------------------------------------------------------
这是回复LX的~:
T里没有这东西嘛[s:187]
所以感觉匹配的可破坏物是用来坑人的
回复

使用道具 举报

发表于 2012-1-10 01:54:50 | 显示全部楼层
明明“选取可破坏物做动作"这东西不给填条件
但是却偏偏在可破坏物里找到了“匹配的可破坏物”这东西
[jass]function EnumDestructablesInRectAll takes rect r, code actionFunc returns nothing
    call EnumDestructablesInRect(r, null, actionFunc)
endfunction[/jass]
这个是“选取可破坏物做动作”转换的J,BJ封装的,参数只有区域和动作函数

关键是里面调用的函数,EnumDestructablesInRect,一共三个参数:
[jass]native EnumDestructablesInRect takes rect r, boolexpr filter, code actionFunc returns nothing[/jass]
可以看到中间第二个参数是布尔判断式,那个匹配的可破坏物是用在这里的……
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 13:19 , Processed in 0.039390 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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