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

如何让一个单位释放技能后做动作

[复制链接]
发表于 2011-6-29 18:28:50 | 显示全部楼层 |阅读模式
RT,以下是我的触发,但是会有错,请指点
[trigger]

type1 a
    事件
        单位 - A unit 发布一个无目标的指令
    环境
        (Issued order) 等于 (Order(defend))
    动作
        Set Loc[0] = (Position of Hero)
        Set Loc[1] = (Loc[0] offset by 100.00 towards (Facing of Hero) degrees)
        单位 - Order Hero to 人族步兵 - 停止防御
        单位 - Order Hero to 停止
        单位 - 暂停 Hero
        动画 - Play Hero's attack animation
        单位 - 不可暂停 Hero
        倒数计时器 - Start Timer[0] as a 一次射击 timer that will expire in 0.75 seconds
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;触发器 - Turn on type1 b <情报>
[/trigger]

PS.再问个问题,怎么判定一个扇形的区域,据说是选取圆形区域然后判断点与点的角度?
发表于 2011-6-29 20:26:27 | 显示全部楼层
问问题时,请清楚的描述出现了什么错误,以及你想要的效果。

而就触发表面上的错误来说:
①在”发布无目标命令事件“里面使用”发布无目标命令“,很可能会无效,并触发某些灵异的BUG。
②发布命令后你居然又暂停……
③暂停后你又不暂停了……
④没看到你其他触发,不过这些确实乱七八糟的…………
回复

使用道具 举报

 楼主| 发表于 2011-6-29 20:32:35 | 显示全部楼层
好吧,其实我只是想要捕捉到这个“防御”的开启然后关掉它然后播放动作。
回复

使用道具 举报

发表于 2011-6-29 20:35:29 | 显示全部楼层
至于判断点是否在扇形范围内
&#160;&#160;&#160;&#160;以扇形的圆心为极点,一条边为极轴建立极坐标系。
&#160;&#160;&#160;&#160;再求出点的极坐标,就能根据极角和极径判断了。
&#160;&#160;&#160;&#160;在内的条件是极角小与扇形另一边的极角,极径小于扇形半径。
回复

使用道具 举报

 楼主| 发表于 2011-6-29 21:06:35 | 显示全部楼层
相当复杂的计算....好吧,那么
引用第2楼·于2011-06-29 20:32发表的  :
好吧,其实我只是想要捕捉到这个“防御”的开启然后关掉它然后播放动作。
回复

使用道具 举报

发表于 2011-6-29 21:13:52 | 显示全部楼层
引用第2楼·于2011-06-29 20:32发表的&#160;&#160;:
好吧,其实我只是想要捕捉到这个“防御”的开启然后关掉它然后播放动作。
发布命令事件结束时,单位才会执行命令……
所以你的问题在于:防御尚未开启,你却发送了关闭命令。
正确的做法是:开启零秒计时器,然后计时器到期时关闭防御。

还有,暂停和恢复之间需要有一个等待。
回复

使用道具 举报

发表于 2011-6-29 21:17:01 | 显示全部楼层
引用第4楼·于2011-06-29 21:06发表的&#160;&#160;:
相当复杂的计算....好吧,那么

自己想的算法,可能不是最佳……
你可以搜索一下有没有更好的。
[jass]function IsLocInDirection takes real x,real y,real tx,real ty,real facing,real sa,real ea returns boolean
&#160; &#160; local real ang = (57.296)*Atan2(ty-y,tx-x)+180
&#160; &#160; local real rsa = facing + sa
&#160; &#160; local real rea = facing + ea
&#160; &#160; if(ang>=rsa and ang<=rea)then
&#160; &#160; &#160; &#160; return true
&#160; &#160; endif
&#160; &#160; set ang = ang + 360.0
&#160; &#160; if(ang>=rsa and ang<=rea)then
&#160; &#160; &#160; &#160; return true
&#160; &#160; endif
&#160; &#160; return false
endfunction
[/jass]
这个貌似不错,虽然也不简单。
回复

使用道具 举报

发表于 2011-6-29 21:30:37 | 显示全部楼层
非要防御么,不计较Buff的话,魔法护盾可以用删除Buff来取消。
好像……很没用的建议。
回复

使用道具 举报

 楼主| 发表于 2011-6-29 21:33:35 | 显示全部楼层
谢谢希瓦~~
回复

使用道具 举报

发表于 2011-6-29 22:06:22 | 显示全部楼层
晕了,貌似直接用
Cos(夹角)> Cos(扇形角 / 2)
就可以判断……
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-5 16:14 , Processed in 0.050824 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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