找回密码
 点一下
查看: 2115|回复: 20

为什么会捕捉不到马甲单位呢??

[复制链接]
发表于 2011-7-2 08:45:23 | 显示全部楼层 |阅读模式
[trigger]未命名触发器 003
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 咆哮
    动作
        设置 T = (触发单位)
        设置 R = 500.00
        设置 R2 = 50.00
        设置 Hight = 100.00
        设置 Point[0] = (T 的位置)
        设置 Angle[0] = (T 的面向角度)
        设置 Angle2[0] = (T 的面向角度)
        设置 I = 6
        设置 I2 = 6
        For循环整数A从 1 到 I, 做动作
            Loop - 动作
                设置 Angle[循环整数A [R]] = ((360.00 / (转换 I 为实数)) x (转换 循环整数A [R] 为实数))
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Angle[循环整数A [R]] 大于 180.00
                    Then - 动作
                        设置 Point[循环整数A [R]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A [R]]))) ,方向为 (Angle[0] + 270.00) 度的位移处)
                    Else - 动作
                        设置 Point[循环整数A [R]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A [R]]))) ,方向为 (Angle[0] - 90.00) 度的位移处)
                设置 H[循环整数A [R]] = ((R x (Cos(Angle[循环整数A [R]]))) + Hight)
                For循环整数B从 1 到 I2, 做动作
                    Loop - 动作
                        设置 Angle2[循环整数B [R]] = ((360.00 / (转换 I2 为实数)) x (转换 循环整数B [R] 为实数))
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                Angle2[循环整数B [R]] 大于 180.00
                            Then - 动作
                                设置 Point2[循环整数B [R]] = (从 Point[循环整数A [R]] 开始,距离 (R2 x (Sin(Angle2[循环整数B [R]]))) ,方向为 (Angle2[0] + 270.00) 度的位移处)
                            Else - 动作
                                设置 Point2[循环整数B [R]] = (从 Point[循环整数A [R]] 开始,距离 (R2 x (Sin(Angle2[循环整数B [R]]))) ,方向为 (Angle2[0] - 90.00) 度的位移处)
                        设置 LC[循环整数B [R]] = (新建 (T 的所有者) 的 小精灵 在 Point2[循环整数B [R]] 面向角度:Angle[0] 度)
                        动画 - 改变 LC[循环整数B [R]] 的飞行高度为 ((R2 x (Cos(Angle2[循环整数B [R]]))) + (H[循环整数A [R]] + Hight)) ,变换速率: 0.00
        计时器 - 开启 Timer ,计时方式: 循环 时间设置: 0.05 秒
[/trigger]




[trigger]未命名触发器 004
    事件
        时间 - Timer 到期
    条件
    动作
        For循环整数A从 1 到 I, 做动作
            Loop - 动作
                设置 Angle[循环整数A [R]] = (Angle[循环整数A [R]] + 5.00)
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Angle[循环整数A [R]] 大于 180.00
                    Then - 动作
                        设置 Point[循环整数A [R]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A [R]]))) ,方向为 (Angle[0] + 270.00) 度的位移处)
                    Else - 动作
                        设置 Point[循环整数A [R]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A [R]]))) ,方向为 (Angle[0] - 90.00) 度的位移处)
                设置 H[循环整数A [R]] = ((R x (Cos(Angle[循环整数A [R]]))) + Hight)
                For循环整数B从 1 到 I2, 做动作
                    Loop - 动作
                        设置 Angle2[循环整数B [R]] = (Angle2[循环整数B [R]] - 15.00)
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                Angle2[循环整数B [R]] 大于 180.00
                            Then - 动作
                                设置 Point2[循环整数B [R]] = (从 Point[循环整数A [R]] 开始,距离 (R2 x (Sin(Angle2[循环整数B [R]]))) ,方向为 (Angle2[0] + 270.00) 度的位移处)
                            Else - 动作
                                设置 Point2[循环整数B [R]] = (从 Point[循环整数A [R]] 开始,距离 (R2 x (Sin(Angle2[循环整数B [R]]))) ,方向为 (Angle2[0] - 90.00) 度的位移处)
                        单位 - 设置 LC[循环整数B [R]] 的X坐标为 (Point2[循环整数B [R]] 的X轴坐标)
                        单位 - 设置 LC[循环整数B [R]] 的Y坐标为 (Point2[循环整数B [R]] 的Y轴坐标)
                        动画 - 改变 LC[循环整数B [R]] 的飞行高度为 ((R2 x (Cos(Angle2[循环整数B [R]]))) + (H[循环整数A [R]] + Hight)) ,变换速率: 0.00
[/trigger]





我想问一下·为什么在循环里捕捉不到马甲单位呢???
发表于 2011-7-2 11:31:33 | 显示全部楼层
这帖莫非是在召唤我?~
回复

使用道具 举报

发表于 2011-7-2 13:02:21 | 显示全部楼层
把图传上来吧 这么长,你具体要的效果是什么,你错误的效果是什么都没说
回复

使用道具 举报

发表于 2011-7-2 13:46:01 | 显示全部楼层
你要的是不是这种效果
test.gif

截图似乎看不清... 就是像大转盘那样的
回复

使用道具 举报

 楼主| 发表于 2011-7-2 16:11:07 | 显示全部楼层
差不多吧```就像摩天轮那样``以小摩天轮为基准  


郁闷.w3x (30 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2011-7-2 16:13:25 | 显示全部楼层
希望有人帮下忙```如何捕捉马甲单位呢/?

可以发我邮箱[email protected]
回复

使用道具 举报

发表于 2011-7-2 16:15:24 | 显示全部楼层
好吧。。。不知道LZ想要的到底是什么效果。。我改出来的效果与LS的差好多额……


嘛。。先上截图吧~
马甲捕捉3.gif
第一遍看的时候会卡,之后就正常了~
马甲的模型我选的是“球体-<复仇之魂-等级1>”,选其它模型的话视觉效果就不一样了,至于圣骑身后那个“柱子”,暂未找到原因……


关于LZ的两个T,我觉得有很多要修改的地方。(如果LZ是贴了这个技能的所有T,以下分析全以这个为前提)
PS:由于我这边现在是凌晨……所以有打错字的地方请谅解下
首先就是多余的变量,比如:
[trigger]未命名触发器 002
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 咆哮
    动作
        设置 T = (触发单位)
        设置 R = 500.00
        设置 R2 = 50.00
        设置 Hight = 100.00
        设置 Point[0] = (T 的位置)
        设置 Angle[0] = (T 的面向角度)
        设置 Angle2[0] = (T 的面向角度)
        设置 I = 6
        设置 I2 = 6
[/trigger]
其中 I 与 I2 完全是两个没有用的变量,因为在接下来的所有动作中并没有动态修改这两个值的动作,所以可以不要,直接用数字6即可,接下来是设置完变量后的部分,本来想分开分析的,但是实在困死了就不弄了,放一起了……如果不方便看,请见谅。
[trigger]未命名触发器 002
   事件和条件略……
   动作
        For 循环整数A 从 1 到 I, 做动作
            Loop - 动作
                设置 Angle[循环整数A[R]] = ((360.00 / (转换 I 为实数)) x (转换 循环整数A[R] 为实数))
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Angle[循环整数A[R]] 大于 180.00
                    Then - 动作
                        设置 Point[循环整数A[R]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A[R]]))) ,方向为 (Angle[0] + 270.00) 度的位移处)
                    Else - 动作
                        设置 Point[循环整数A[R]]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A[R]]))) ,方向为 (Angle[0] - 90.00) 度的位移处)
                设置 H[循环整数A[R]] = ((R x (Cos(Angle[循环整数A[R]]))) + Hight)
                For 循环整数B 从 1 到 I2, 做动作
                    Loop - 动作
                        设置 Angle2[循环整数B[R]] = ((360.00 / (转换 I2 为实数)) x (转换 循环整数B[R] 为实数))
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                Angle[循环整数B[R]] 大于 180.00
                            Then - 动作
                                设置 Point2[循环整数B[R]] = (从 Point[循环整数B[R]] 开始,距离 (R2 x (Sin(Angle2[循环整数B[R]]))) ,方向为 (Angle2[0] + 270.00) 度的位移处)
                            Else - 动作
                                设置 Point2[循环整数B[R]] = (从 Point[循环整数A[R]] 开始,距离 (R2 x (Sin(Angle2[循环整数B[R]]))) ,方向为 (Angle2[0] - 90.00) 度的位移处)
                        设置 LC[循环整数B[R]] = (新建 (T 的所有者) 的 小精灵 在 Point2[循环整数B[R]] 面向角度:Angle[0] 度)
                        动画 - 改变 LC[循环整数B[R]] 的飞行高度为 ((R2 x (Cos(Angle[循环整数B[R]]))) + (H[循环整数A[R]] + Hight)) ,变换速率: 0.00
        计时器 - 开启 Timer ,计时方式: 循环 时间设置: 0.05 秒
[/trigger]
1.看出 I 与 I2 没用就是在这两个T之后发现 I 与 I2 根本没有发生任何变化
2.若是仅用作观赏技能那没事,但是若用作游戏,循环整数A与B就很危险了,很有可能会被其它的循环整数A与B取代,也就是说,一张图最好最多只用一次A与B,其它的都用自定义整数,比如:

[trigger]
    动作
        For Loop[0] 从 1 到 6, 做动作
            Loop - 动作
                设置 Angle[Loop[0]] = ((360.00 / (转换 I 为实数)) x (转换 Loop[0] 为实数))
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Angle[Loop[0]] 大于 180.00
                    Then - 动作 ……
[/trigger]
3.上面这个T中发现,每次循环的时候,“((360.00 / (转换 I 为实数))”这个值总是不变的,因为 I 始终为6,为何不干脆直接写60呢?于是我猜测 LZ是想要写成“((360.00 / (转换 Loop[0] 为实数))”
4.请看下面这个T:

[trigger]未命名触发器 002
    动作
        For 循环整数A 从 1 到 I, 做动作
            Loop - 动作
                设置 Angle[循环整数A[R]] = ((360.00 / (转换 I 为实数)) x (转换 循环整数A[R] 为实数))
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Angle[循环整数A[R]] 大于 180.00
                    Then - 动作
                        设置 Point[循环整数A[R]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A[R]]))) ,方向为 (Angle[0] + 270.00) 度的位移处)
                    Else - 动作
                        设置 Point[循环整数A[R]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[循环整数A[R]]))) ,方向为 (Angle[0] - 90.00) 度的位移处)
[/trigger]
不知LZ发现没有,不管Angle是多少,Point[1-6]的值都是一样的……
举个例子:Angle[0]=(T的面向角度),假设为90度;
根据上面这个T的写法,Angle[0] 是不变的,所以 (Angle[0] + 270.00)  & (Angle[0] - 90.00) 永远是固定值,但是再仔细看一下,发现这两个值是相等的! 90+270=360 与 90-90=0是同一个方向。
于是,不管Angle[循环整数A[R]]是否大于180,Then和Else的动作所设置的那个Point[循环整数A[R]]都是同一个点。。
当然,循环整数B与第二个T里也是同样的问题,于是我就猜LZ要的可能是下面这样的T:

[trigger]
    动作
        For Loop[0] 从 1 到 6, 做动作
            Loop - 动作
                设置 Angle[Loop[0]] = ((360.00 / (转换 Loop[0] 为实数)) x (转换 Loop[0] 为实数))
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Angle[Loop[0]] 大于 180.00
                    Then - 动作
                        设置 Point[Loop[0]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[Loop[0]]))) ,方向为 (Angle[Loop[0]] + 270.00) 度的位移处)
                    Else - 动作
                        设置 Point[Loop[0]] = (从 Point[0] 开始,距离 (R x (Sin(Angle[Loop[0]]))) ,方向为 (Angle[Loop[0]] - 90.00) 度的位移处)
                设置 H[Loop[0]] = ((R x (Cos(Angle[Loop[0]]))) + Hight)
                For Loop[1] 从 1 到 I2, 做动作
                    Loop - 动作
                        设置 Angle2[Loop[1]] = ((360.00 / (转换 Loop[1] 为实数)) x (转换 Loop[1] 为实数))
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                Angle[Loop[1]] 大于 180.00
                            Then - 动作
                                设置 Point2[Loop[1]] = (从 Point[Loop[1]] 开始,距离 (R2 x (Sin(Angle2[Loop[1]]))) ,方向为 (Angle2[Loop[1]] + 270.00) 度的位移处)
                            Else - 动作
                                设置 Point2[Loop[1]] = (从 Point[Loop[0]] 开始,距离 (R2 x (Sin(Angle2[Loop[1]]))) ,方向为 (Angle2[Loop[1]] - 90.00) 度的位移处)
                        设置 LC[Loop[1]] = (新建 (T 的所有者) 的 小精灵 在 Point2[Loop[1]] 面向角度:Angle[0] 度)
                        动画 - 改变 LC[Loop[1]] 的飞行高度为 ((R2 x (Cos(Angle[Loop[1]]))) + (H[Loop[0]] + Hight)) ,变换速率: 0.00
        计时器 - 开启 Timer ,计时方式: 循环 时间设置: 0.05 秒
[/trigger]
5.这第一个T还有两个很严重的问题,其中之一就是排泄问题(当然第二个T也是),这个循环A一共做6次,创建了6个Point,而在这基础上,循环B一共做了36次,创建了36个点,一个都没排泄……
另外,第二个T中:

[trigger]未命名触发器 003
    事件
        时间 - Timer 到期
    条件
    动作
        For Loop[2] 从 1 到 I, 做动作
            Loop - 动作
                设置 Angle[Loop[2]] = (Angle[Loop[2]] + 5.00)
                如果所有条件成立则做动作1,否则做动作2
                    If - 条件
                        Angle[Loop[2]] 大于 180.00
                    Then - 动作
                        设置 Point[Loop[2]] = ……
                    Else - 动作
                        设置 Point[Loop[2]] = ……

                For Loop[3] 从 1 到 I2, 做动作
                    Loop - 动作
                        设置 Angle2[Loop[3]] = (Angle2[Loop[3]] - 15.00)
                        如果所有条件成立则做动作1,否则做动作2
                            If - 条件
                                Angle2[Loop[3]] 大于 180.00
                            Then - 动作
                                设置 Point2[Loop[3]] = ……
                            Else - 动作
                                设置 Point2[Loop[3]] = ……
[/trigger]
每次会创建42个点,但是!!这是个循环的T,循环周期为0.05s!!于是每0.05s创建42个点还没有排泄!!……我已经预见到世界上最强的计算机将会卡死在未来~(不好意思,吐个槽……实在忍不住了……)
6.那么最后,就是关于这个选不到马甲的事情
LZ请看第两个T的关键部分:

[trigger]未命名触发器 002
    事件
    条件
    动作
                For Loop[1] 从 1 到 I2, 做动作
                    Loop - 动作
                        设置 LC[Loop[1]] = (新建 (T 的所有者) 的 小精灵 在 Point2[Loop[1]] 面向角度:Angle[0] 度)
                        动画 - 改变 LC[Loop[1]] 的飞行高度为 ((R2 x (Cos(Angle[Loop[1]]))) + (H[Loop[0]] + Hight)) ,变换速率: 0.00
            所有循环结束后开启 循环计时器Timer
[/trigger]
[trigger]未命名触发器 003
    事件
        时间 - Timer 到期
    条件
    动作
                For Loop[3] 从 1 到 I2, 做动作
                    Loop - 动作
                        单位 - 设置 LC[Loop[3]] 的X坐标为 (Point2[Loop[3]] 的X轴坐标)
                        单位 - 设置 LC[Loop[3]] 的Y坐标为 (Point2[Loop[3]] 的Y轴坐标)
                        动画 - 改变 LC[Loop[3]] 的飞行高度为 ((R2 x (Cos(Angle2[Loop[3]]))) + (H[Loop[2]] + Hight)) ,变换速率: 0.00
[/trigger]
LZ请仔细查看第一个T的给马甲设置变量的动作,可以发现,仅设置了LC[Loop[1]]=LC[1-6]的马甲,但是一共创建了36个马甲,也就是说,之前循环时设置的马甲变量会被之后的覆盖,所以第二个T的马甲相关动作就之后最后一组的马甲会响应。
解决方法呢,我用的是采用动态修改数组的方法设置,用LC[循环整数A*10+循环整数B]来注册马甲
比如第一次循环,那么创建的六个马甲就分别对应LC[11]、LC[12]、LC[13]、LC[14]、LC[15]、LC[16],而第二次循环时就变成LC[2X]了~
同样的,第二个触发里也需要使用相似的设置来对应,比如LC[Loop[2]*10+Loop[3]]



以上~我要去睡觉了额……四点了我晕……
演示图附上: 咆哮(马甲捕捉).w3x (20 KB, 下载次数: 10)
回复

使用道具 举报

发表于 2011-7-2 16:17:00 | 显示全部楼层
引用第4楼wudehike于2011-07-02 16:11发表的  :
差不多吧```就像摩天轮那样``以小摩天轮为基准  


原来是这样的效果……
这样的话那根“柱子”一样的东西就无所谓了~
我去睡了……
回复

使用道具 举报

 楼主| 发表于 2011-7-2 16:23:09 | 显示全部楼层
I是大圆数量```I2是小圆数量```不能说没用```只是方便修改```

还有排测问题```这是测试图```如果是要用的话``我会用J写的

很感谢你提供帮助```

```谢谢```
回复

使用道具 举报

 楼主| 发表于 2011-7-2 16:25:52 | 显示全部楼层
等于就是鬼一的毒龙钻加强版一样``我就是想要那种效果```
回复

使用道具 举报

发表于 2011-7-2 16:57:50 | 显示全部楼层
这是你没传图时我按你触发做的,其中几个有问题的地方我修改了下.你把模型改掉后看看是不是你要的效果.

咆哮.w3x

20 KB, 下载次数: 10

回复

使用道具 举报

 楼主| 发表于 2011-7-2 17:28:18 | 显示全部楼层
谢谢
回复

使用道具 举报

发表于 2011-7-2 23:06:43 | 显示全部楼层
引用第10楼永夜的极光于2011-07-02 16:57发表的  :
这是你没传图时我按你触发做的,其中几个有问题的地方我修改了下.你把模型改掉后看看是不是你要的效果.
请问您的图里面point[循环整数A]的排泄的位置是不是有问题?
QQ截图未命名.png
因为当运行到这一步的时候循环整数A应该已经是7了(至少是6....我不清楚J的循环整数是怎么做记录的),所以前1-5的点应该都未排泄,而且就算放在循环整数A里,那么接下来的循环整数B中的point2就没有参照点了;
同理,那个H[循环整数A]实际就只记录了一个高度;
另外我在6L说了,循环整数B里的条件判断是无效的,即不管angle2是不是大于180,方向都是一样的。
回复

使用道具 举报

发表于 2011-7-2 23:12:01 | 显示全部楼层
引用第9楼wudehike于2011-07-02 16:25发表的  :
等于就是鬼一的毒龙钻加强版一样``我就是想要那种效果```
不知道鬼一这号人物。。。。
回复

使用道具 举报

发表于 2011-7-2 23:18:16 | 显示全部楼层

回 12楼(chyj4747) 的帖子

首先你可以看到排泄点是在循环里的,也就是说每一次的循环都会排除一个点,比如从1到2循环,循环1的时候排出的是1,循环2的时候排出的便是2,因为点的数组与循环整数对应着.
第二个问题,我没看懂怎么办
回复

使用道具 举报

发表于 2011-7-2 23:28:08 | 显示全部楼层

Re:回 12楼(chyj4747) 的帖子

引用第14楼永夜的极光于2011-07-02 23:18发表的 回 12楼(chyj4747) 的帖子 :
首先你可以看到排泄点是在循环里的,也就是说每一次的循环都会排除一个点,比如从1到2循环,循环1的时候排出的是1,循环2的时候排出的便是2,因为点的数组与循环整数对应着.
第二个问题,我没看懂怎么办
不,请您仔细看下,那个排泄点不在loop里……

第二个问题是指那个判断式吗?请先看截图:
QQ截图未命名.png
是这样,不管angle[循环整数B]是不是大于180,最后创建的point2一定是(angle2[0]+270)或(angle2[0]-90)的方向上;
假设angle2[0]=触发单位的面向角=90°,那么90°+270°=360°,90°-90°=0°,360°=0°
所以方向上是一样的,也就是无需判断条件,因为出来的结果都是一样的


发现无法全部显示,于是补下截图:
QQ截图未命名.png
回复

使用道具 举报

发表于 2011-7-2 23:36:32 | 显示全部楼层
哦 原来如此 照着上面触发弄得时候估计看花眼了,所以我就说看别人的触发比自己做要累~
回复

使用道具 举报

发表于 2011-7-2 23:44:17 | 显示全部楼层
不知道鬼一这号人物。。。。
最近一次清理路人之前技能区最左边的一个路人。
回复

使用道具 举报

发表于 2011-7-3 09:05:54 | 显示全部楼层
我最不擅长这种一堆算法的技能
回复

使用道具 举报

 楼主| 发表于 2011-7-3 15:18:47 | 显示全部楼层
已经做好了,有一点我想说,如果没有角度判定的话,确实不行,我在家试了`我也不知道为什么,本来是angle+90```angle-90,,,但是它会偏到一边去,所以就用这种比较蛋疼的算法


我也知道这很雷人```但没有角度判定的话 ,真的对不上



非常感谢chyj4747提供的捕捉方法,也很感谢各位帮忙,还有永夜的极光````
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-25 14:51 , Processed in 0.089877 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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