找回密码
 点一下
查看: 1236|回复: 19

技能用着用着好像会变卡,求检查

[复制链接]
发表于 2010-8-20 20:46:36 | 显示全部楼层 |阅读模式
盯着子弹阵形走好像游戏速度会下降,但又好像是错觉,又好像不是错觉,我说不清楚,只能怀疑是排泄没弄彻底,求高人检查
子弹模型是绿蜉蝣

第一个是放个子弹阵形出来
[trigger]
PhoenixStrike1
    事件
        单位 - 任意单位 发动技能效果
    条件
        (施放技能) 等于 测试用技能
    动作
        Set PhoenixStrikeCaster = BOSS (7号BOSS) 1543 <预设>
        Set PhoenixStrikePoint[1] = (PhoenixStrikeCaster 的位置)
        Set PhoenixStrikeAngle[1] = (PhoenixStrikeCaster 的面向角度)
        Set PhoenixStrikeAngle[2] = (PhoenixStrikeAngle[1] + 120.00)
        Set PhoenixDistance[1] = 150.00
        Set PhoenixDistance[11] = 0.00
        单位 - 创建 1 个 毒影 (7号BOSS) 给 (PhoenixStrikeCaster 的所有者) 在 PhoenixStrikePoint[1] ,面向角度为 PhoenixStrikeAngle[1] 度
        单位组 - 为 PhoenixStrikeGroup[1] 添加 (最后创建的单位)
        循环动作[循环整数B]从 1 到 2, 运行 (Loop - 动作)
            Loop - 动作
                Set PhoenixDistance[11] = (PhoenixDistance[11] + 1.00)
                Set PhoenixDistance[2] = (PhoenixDistance[1] x PhoenixDistance[11])
                Set PhoenixStrikePoint[2] = (从 PhoenixStrikePoint[1] 开始,距离 PhoenixDistance[2] ,方向为 PhoenixStrikeAngle[1] 度的位移处)
                单位 - 创建 1 个 毒影 (7号BOSS) 给 (PhoenixStrikeCaster 的所有者) 在 PhoenixStrikePoint[2] ,面向角度为 PhoenixStrikeAngle[1] 度
                单位组 - 为 PhoenixStrikeGroup[1] 添加 (最后创建的单位)
                点 - 清除 PhoenixStrikePoint[2]
        Set PhoenixDistance[11] = 0.00
        循环动作[循环整数A]从 1 到 5, 运行 (Loop - 动作)
            Loop - 动作
                循环动作[循环整数B]从 1 到 3, 运行 (Loop - 动作)
                    Loop - 动作
                        Set PhoenixDistance[11] = (PhoenixDistance[11] + 1.00)
                        Set PhoenixDistance[2] = (PhoenixDistance[1] x PhoenixDistance[11])
                        Set PhoenixStrikePoint[2] = (从 PhoenixStrikePoint[1] 开始,距离 PhoenixDistance[2] ,方向为 PhoenixStrikeAngle[2] 度的位移处)
                        单位 - 创建 1 个 毒影 (7号BOSS) 给 (PhoenixStrikeCaster 的所有者) 在 PhoenixStrikePoint[2] ,面向角度为 PhoenixStrikeAngle[1] 度
                        单位组 - 为 PhoenixStrikeGroup[1] 添加 (最后创建的单位)
                        点 - 清除 PhoenixStrikePoint[2]
                Set PhoenixDistance[11] = 0.00
                Set PhoenixStrikeAngle[2] = (PhoenixStrikeAngle[2] + 30.00)
        点 - 清除 PhoenixStrikePoint[1]
        等待 2.00 秒(游戏时间)
        计时器 - 启动 EnemyFactoryTimer[53],应用计时方式: 循环,计时周期为 0.03 秒
[/trigger]

第二个是子弹的移动和爆炸判断

[trigger]
PhoenixStrike2
    事件
        时间 - EnemyFactoryTimer[53] 到期
    条件
    动作
        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
            If - 条件
                (PhoenixStrikeGroup[1] 为空) 等于 FALSE
            Then - 动作
                单位组 - 选取 PhoenixStrikeGroup[1] 内所有单位做动作
                    Loop - 动作
                        Set PhoenixStrikePoint[4] = ((选取单位) 的位置)
                        Set PhoenixStrikePoint[5] = (从 PhoenixStrikePoint[4] 开始,距离 5.00 ,方向为 PhoenixStrikeAngle[1] 度的位移处)
                        Set PhoenixStrikeGroup[2] = (半径为 100.00 圆心为 ((选取单位) 的位置) 且满足 ((((匹配单位) 是 ((选取单位) 的所有者) 的敌对单位) 等于 TRUE) 且 (((匹配单位) 是存活的) 等于 TRUE)) 的所有单位)
                        如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
                            If - 条件
                                (PhoenixStrikeGroup[2] 为空) 等于 TRUE
                            Then - 动作
                                如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
                                    If - 条件
                                        (PhoenixStrikePoint[5] 处的 可通行地面 通行状态为关闭) 等于 TRUE
                                    Then - 动作
                                        单位 - 立即移动 (选取单位) 到 PhoenixStrikePoint[5]
                                        单位 - 杀死 (选取单位)
                                        点 - 清除 PhoenixStrikePoint[4]
                                        点 - 清除 PhoenixStrikePoint[5]
                                        单位组 - 删除 PhoenixStrikeGroup[2]
                                    Else - 动作
                                        单位 - 立即移动 (选取单位) 到 PhoenixStrikePoint[5]
                                        点 - 清除 PhoenixStrikePoint[4]
                                        点 - 清除 PhoenixStrikePoint[5]
                                        单位组 - 删除 PhoenixStrikeGroup[2]
                            Else - 动作
                                单位 - 立即移动 (选取单位) 到 PhoenixStrikePoint[5]
                                单位 - 杀死 (选取单位)
                                点 - 清除 PhoenixStrikePoint[4]
                                点 - 清除 PhoenixStrikePoint[5]
                                单位组 - 删除 PhoenixStrikeGroup[2]
            Else - 动作
                计时器 - 暂停 EnemyFactoryTimer[53]
[/trigger]

这个是爆炸的触发,好像可以合并到2里?

[trigger]
PhoenixStrike4
    事件
        单位 - 任意单位 死亡
    条件
        ((触发单位) 的类型) 等于 毒影 (7号BOSS)
    动作
        Set PhoenixStrikePoint[6] = ((触发单位) 的位置)
        单位 - 创建 1 个 万能单位 (触发) 给 ((触发单位) 的所有者) 在 PhoenixStrikePoint[6] ,面向角度为 ((触发单位) 的面向角度) 度
        单位 - 为 (最后创建的单位) 添加 毒影 (7号BOSS)
        单位 - 对 (最后创建的单位) 发布 中立 - 自爆(地精) 命令到目标点: PhoenixStrikePoint[6]
        点 - 清除 PhoenixStrikePoint[6]
[/trigger]
发表于 2010-8-20 20:52:02 | 显示全部楼层
计时器 - 启动 EnemyFactoryTimer[53],应用计时方式: 循环,计时周期为 0.03 秒
每次使用都会开启0.03秒的计时器,重叠起来,技能使用次数多了后会估计很卡,子弹移动速度也会越来越快。。。。。。。
回复

使用道具 举报

 楼主| 发表于 2010-8-20 20:56:18 | 显示全部楼层
引用第1楼a595859893于2010-08-20 20:52发表的  :
计时器 - 启动 EnemyFactoryTimer[53],应用计时方式: 循环,计时周期为 0.03 秒
每次使用都会开启0.03秒的计时器,重叠起来,技能使用次数多了后会估计很卡,子弹移动速度也会越来越快。。。。。。。
启用不是重置这个计时器么,而且技能CD10秒,但是MJ只有7秒生命,单位组1肯定会死光的,这样就触发了暂停了计时器,然后再用技能才重新启用计时器的
回复

使用道具 举报

发表于 2010-8-20 21:00:35 | 显示全部楼层
测试了下,貌似真的重置了的说。。。。。
我再看看吧。。。。
回复

使用道具 举报

发表于 2010-8-20 21:06:49 | 显示全部楼层
感觉似乎没有问题,除了触发有些地方有些多余外(要杀死单位就杀死嘛,干什么要立即移动后再杀)。。。。
其实单位多了也会导致电脑变卡,虽然感觉十几个单位应该不成问题。。。。。
[trigger]
PhoenixStrike2
     事件
         时间 - EnemyFactoryTimer[53] 到期
     条件
     动作
         如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
             If - 条件
                 (PhoenixStrikeGroup[1] 为空) 等于 FALSE
             Then - 动作
                 单位组 - 选取 PhoenixStrikeGroup[1] 内所有单位做动作
                     Loop - 动作
                          Set PhoenixStrikePoint[4] = ((选取单位) 的位置)
                          Set PhoenixStrikePoint[5] = (从 PhoenixStrikePoint[4] 开始,距离 5.00 ,方向为 PhoenixStrikeAngle[1] 度的位移处)
                          Set PhoenixStrikeGroup[2] = (半径为 100.00 圆心为 ((选取单位) 的位置) 且满足 ((((匹配单位) 是 ((选取单位) 的所有者) 的敌对单位) 等于 TRUE) 且 (((匹配单位) 是存活的) 等于 TRUE)) 的所有单位)
                          如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
                               If - 条件
                                   (PhoenixStrikeGroup[2] 为空) 等于 TRUE
                                   (PhoenixStrikePoint[5] 处的 可通行地面 通行状态为关闭) 等于 FALSE
                               Then - 动作
                                   单位 - 立即移动 (选取单位) 到 PhoenixStrikePoint[5]
                                Else - 动作
                                   单位 - 杀死 (选取单位)
                          点 - 清除 PhoenixStrikePoint[4]
                          点 - 清除 PhoenixStrikePoint[5]
                          单位组 - 删除 PhoenixStrikeGroup[2]
              Else - 动作
                   计时器 - 暂停 EnemyFactoryTimer[53]
[/trigger]
这只是去掉了多余的地方的触发
回复

使用道具 举报

 楼主| 发表于 2010-8-20 21:09:52 | 显示全部楼层
引用第4楼a595859893于2010-08-20 21:06发表的  :
感觉似乎没有问题,除了触发有些地方有些多余外(要杀死单位就杀死嘛,干什么要立即移动后再杀)。。。。
其实单位多了也会导致电脑变卡,虽然感觉十几个单位应该不成问题。。。。。
移动再杀那爆炸范围可以修正15点范围
可是我的地图测试着好像是有卡的错觉~~需要上传上来看看么
回复

使用道具 举报

发表于 2010-8-20 21:21:05 | 显示全部楼层
发上来看看吧
回复

使用道具 举报

 楼主| 发表于 2010-8-20 21:33:17 | 显示全部楼层
看看发不发的上来

btanks-ver1-3.w3x (3.03 MB, 下载次数: 6)
回复

使用道具 举报

 楼主| 发表于 2010-8-20 21:39:42 | 显示全部楼层
测试单位在左下角,这个地图UI用了YDWE1.17编辑的
回复

使用道具 举报

发表于 2010-8-20 21:53:08 | 显示全部楼层
自己测试后感觉没有卡啊。。。。。。
不过地图这么大估计会稍微卡一点吧。。。。。。
帮你简化一下触发吧。。。。。。虽然感觉起不了多大作用。。。。。。。
[trigger]
PhoenixStrike2
     事件
         时间 - EnemyFactoryTimer[53] 到期
     条件
     动作
         如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
             If - 条件
                 (PhoenixStrikeGroup[1] 为空) 等于 FALSE
             Then - 动作
                 单位组 - 选取 PhoenixStrikeGroup[1] 内所有单位做动作
                     Loop - 动作
                          Set PhoenixStrikePoint[4] = ((选取单位) 的位置)
                          Set PhoenixStrikePoint[5] = (从 PhoenixStrikePoint[4] 开始,距离 5.00 ,方向为 PhoenixStrikeAngle[1] 度的位移处)
                          Set PhoenixStrikeGroup[2] = (半径为 100.00 圆心为 ((选取单位) 的位置) 且满足 ((((匹配单位) 是 ((选取单位) 的所有者) 的敌对单位) 等于 TRUE) 且 (((匹配单位) 是存活的) 等于 TRUE)) 的所有单位)
                          如果(所有的条件成立) 则运行 (Then - 动作) 否则运行 (Else - 运作)
                               If - 条件
                                   (PhoenixStrikeGroup[2] 为空) 等于 TRUE
                                   (PhoenixStrikePoint[5] 处的 可通行地面 通行状态为关闭) 等于 FALSE
                               Then - 动作
                                   单位 - 立即移动 (选取单位) 到 PhoenixStrikePoint[5]
                               Else - 动作
                                单位 - 杀死(选取单位)
                                单位 - 创建 1 个 万能单位 (触发) 给 ((触发单位) 的所有者) 在 PhoenixStrikePoint[5] ,面向角度为 ((触发单位) 的面向角度) 度
                                单位 - 为 (最后创建的单位) 添加 毒影 (7号BOSS)
                                单位 - 对 (最后创建的单位) 发布 中立 - 自爆(地精) 命令到目标点: PhoenixStrikePoint[5]
                          点 - 清除 PhoenixStrikePoint[4]
                          点 - 清除 PhoenixStrikePoint[5]
                          单位组 - 删除 PhoenixStrikeGroup[2]
              Else - 动作
                   计时器 - 暂停 EnemyFactoryTimer[53]
[/trigger]
将死亡触发合在里面了
回复

使用道具 举报

 楼主| 发表于 2010-8-20 22:00:44 | 显示全部楼层
难道是我的电脑太旧了。。。
回复

使用道具 举报

发表于 2010-8-20 22:03:01 | 显示全部楼层
=.=刚刚又去测试了一下,结果发现变得超卡,技能结束后又不卡了。。。。。
奇怪啊。。。。。
那技能的触发确实是排泄干净了的。。。
或许是地图太大了吧。。。
话说这地图确实挺大
回复

使用道具 举报

 楼主| 发表于 2010-8-20 22:07:32 | 显示全部楼层
我还有3个区域没做,就这样超卡了可怎么办
回复

使用道具 举报

发表于 2010-8-20 22:20:51 | 显示全部楼层
于是发现关掉WE测试游戏就不卡了
回复

使用道具 举报

 楼主| 发表于 2010-8-20 22:23:19 | 显示全部楼层
引用第13楼a595859893于2010-08-20 22:20发表的  :
于是发现关掉WE测试游戏就不卡了
我做的地图有这么灵异么~之前测试前面几个区域都没问题的,一直做到现在做7号BOSS的技能测试的时候就感觉变卡了
说不清楚原因~
只是配置的问题的话那还好办
回复

使用道具 举报

发表于 2010-8-20 22:38:07 | 显示全部楼层
选取区域实现弹道,在子弹多了的时候有时候确实会变得很卡,还算正常。
不过也不排除技能触发存在问题。
等我测试看看。
回复

使用道具 举报

 楼主| 发表于 2010-8-20 22:56:34 | 显示全部楼层
那个是位移15不是位移5,时间从0.01秒提高到0.03秒的时候忘记修正过来了
回复

使用道具 举报

发表于 2010-8-20 23:11:46 | 显示全部楼层
那么有可能是因为位移距离太短而导致被误认为电脑卡了~
回复

使用道具 举报

 楼主| 发表于 2010-8-20 23:19:15 | 显示全部楼层
引用第9楼a595859893于2010-08-20 21:53发表的  :
自己测试后感觉没有卡啊。。。。。。
不过地图这么大估计会稍微卡一点吧。。。。。。
帮你简化一下触发吧。。。。。。虽然感觉起不了多大作用。。。。。。。
IF
A
B

IF
AND
     A
     B

IF
OR
     A
     B
有什么区别?后两者我知道,前者我就曾经知道有触发没加OR导致判断全部失灵= =
按照这个优化了一下以后好像速度是好转了一点~~
虽然我不知道是不是错觉
回复

使用道具 举报

发表于 2010-8-20 23:28:54 | 显示全部楼层
IF
A
B

IF
AND
     A
     B
是一样的,只不过有些场合需要AND而已

IF
OR
    AND
         A
         B
    AND
        C
        D
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 06:40 , Processed in 0.034872 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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