设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2156|回复: 32
打印 上一主题 下一主题

[已经解决] [已解决]请帮忙读下这段代码,代码过长不知道我自己理解...

[复制链接]

Lv5.捕梦者

梦石
0
星屑
37864
在线时间
5432 小时
注册时间
2006-11-10
帖子
6549
1
发表于 2019-5-14 16:27:26 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2019-5-14 16:29 编辑

你的理解没错, @battler_visible 这个实变量是 用来判断 该精灵实例是否显示图片的

你可能会有疑问, 精灵直接用 visible 就可以控制图片显示以否了, 为什么还要多个@battler_visible ?

从脚本的UPDATE里可以看到, @battler_visible 的值改变后, 会调用一个 Sprite 的方法, 用来动态显示图片或者让图片消失,  所以不直接操作 visible 就是为了这个动态效果

然后, 回到你这句, 它的意思就是 @battler_visible 的值是假的时候(也就是战斗图不显示状态), 如果这个时候,战斗者不是隐藏状态(not hidden), 不是死亡状态, 就让战斗图动态显示出来, 后面括号里的先不用管

这个效果就是游戏里, 敌人中途出现(hidden = false 隐藏标志关闭) 或者 复活后的特效, 括号里的那两个是为了"复活动画播放完,伤害显示出来后, 战斗图再显示出来", 没括号里的那个判定的话, 你一用复活技能, 死掉的人就马上蹦起来了, 然后和你一起看复活动画

后话, 要想理解战斗系统的脚本, 要结合实际的战斗流程和表现方式, 这样才更容易理解, 否则光看脚本, 你是很难想像这些变量有什么用, 为什么要这样写的

点评

怎么冲突了? 这句的效果是"什么情况下调用战斗图显示特效", 条件当然是, 1战斗图是不显示的时候, 2战斗者不是隐藏状态, 3,战斗者不是死亡状态下   发表于 2019-5-14 21:57
你把hidden当做"隐藏状态开关" 这样去理解, 打开的时候(true)就是隐藏, 关闭的时候(false)就是不隐藏  发表于 2019-5-14 21:55
都不算, 如果你开始写脚本就会清楚了, 脚本其实是东补西补凑出来的XD, 写的时候没考虑到, 测试的时候发现了,就补上相关判断, 这种是很常见的  发表于 2019-5-14 21:54
,战斗图不显示状态,战斗者不是隐藏状态(显示状态)怎么感觉冲突。  发表于 2019-5-14 21:45
@battler_visible 的值是假的时候(也就是战斗图不显示状态), 如果这个时候,战斗者不是隐藏状态(not hidden) 这句怎么这么绕  发表于 2019-5-14 21:44
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37864
在线时间
5432 小时
注册时间
2006-11-10
帖子
6549
2
发表于 2019-5-14 22:11:54 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2019-5-14 22:32 编辑

第一个是登场的时候, 如果登场的时候是死亡状态(我方) 或者 隐藏状态(敌人设置中途出现), 图片透明度为0(为之后的显示图片特效做准备)

设置敌人中途出现,就是把 hidden (隐藏开关) 打开, 设置方法是在数据库敌群设置里, 右键勾上中途出现即可, 这样这个敌人战斗开始的时候就是隐藏的, 不会攻击也不会被攻击

第二个就是 实施中途出现, 让隐藏的敌人在战斗中出现, 做乱入,召唤等效果, 这个是用战斗事件启动的,  方法就是关闭 hidden(隐藏开关)

有两种情况用到这个判断, 一个是隐藏的敌人出现, 隐藏的敌人, 它的状态是: hidden打开的 非死亡, 所以,只要把hidden关上, 那这行条件就满足了, 调用显示图片特效, 战斗图出现, 新的敌人乱入成功

另一个就是复活,  死亡的角色, 它的状态是: hidden关闭的 死亡中 , 所以只要解除死亡状态, 那这行条件就满足了, 调用显示图片特效, 战斗图出现, 角色复活成功

PS: hidden(隐藏开关)打开的时候是不能复活的, 因为 hp0? 这个复活对象的判断方法里就是判定 hidden==false and hp == 0 才成立

3, 就是逃跑的处理, game_enemy 里, 找到定义逃跑方法, 你就会看到内容就是打开 hidden(隐藏开关)

默认战斗, 正常情况下是不会操作到 hidden 的,  只有设置"中途出现" 或者"敌人逃跑" 才会操作到它, 所以没有这两种情况的时候, hidden的值始终都是false, 不管是死还是活

点评

scene battle 4 的def set_target_battlers(scope)里, 根据技能范围分歧,把对象放到目标数组里  发表于 2019-5-16 16:28
全局搜索了下,还是拿不准是哪块,望指出!  发表于 2019-5-16 11:35
不是, 那段只是用来限制技能效果, 判定复活技能能否使用的地方, 你可以搜索 hp0? 这个函数  发表于 2019-5-15 23:48
判断复活的位置是不是我今天发的那段代码,if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or ((skill.scope == 5 or skill.scope == 6) 这段  发表于 2019-5-15 22:24
因为这个是在使用技能之前判断的, 你的复活技能不能用在没死的人身上, 也不能用在隐藏的人身上  发表于 2019-5-15 16:36

评分

参与人数 1星屑 +200 收起 理由
RyanBern + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-7 08:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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