赞 | 45 |
VIP | 0 |
好人卡 | 0 |
积分 | 146 |
经验 | 0 |
最后登录 | 2024-11-11 |
在线时间 | 2192 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 14576
- 在线时间
- 2192 小时
- 注册时间
- 2019-1-24
- 帖子
- 1123
|
9楼
楼主 |
发表于 2019-5-30 21:34:09
|
只看该作者
本帖最后由 miantouchi 于 2019-10-16 22:11 编辑
思考了2天,刚刚有点头绪,赶紧发下。不对的对方,希望指正,我根据这些日子大家论坛的讲解指点,用流程彻底分析了下战斗界面流程以下。暂时今天写这么多,再修正,终于可以睡个好觉了
第一部分:敌方攻击导致我方致死情况
4-1很快过去
4-2
敌方攻击我方,计算出伤害值172.
此时:隐藏:false,死亡:false,伤害:172,战斗伤害标志:false
接着刷新@spriteset.update
此时:隐藏:false,死亡:true,伤害:172,战斗伤害标志:false
4-3敌方白闪攻击动画ID=0
此时赋值 @phase4_step = 4
@spriteset.update-------Sprite_Battler-update
因为@battler_visible =true,所以执行下面的
# 白色闪烁 whiten后,设置@battler.white_flash = false
此时:隐藏:false,死亡:true,伤害:172,战斗伤害标志:false
update_phase4-----------case @phase4_step-------- update_phase4_step4进入第四步
4-4我方被攻击动画
首先,赋值给 对象方动画id和命中
target.animation_id = @animation2_id
target.animation_hit = (target.damage != "Miss")
接着刷新@spriteset.update
因为@battler_visible =true,所以执行下面的
# 动画,因为此时动画ID = @animation2_id,有值
所以播放被攻击动画,播放后,把对像方动画id归0
此时:隐藏:false,死亡:true,伤害:172,战斗伤害标志:false
4-5我方被攻击显示数值字体。
此时因为第2步有伤害值172,!=nil
所以target.damage_pop = true把伤害标志变成true
接着刷新@spriteset.update
因为@battler_visible =true,所以执行下面的
#伤害因为此时damage_pop = true
所以播放damage动画,
damage设置nil,damage_pops和critical设置为false
接下来
死亡判断动画处(伤害值刚刚被设置为nil,并且已经死亡)此时成立
if @battler.damage == nil and @battler.dead?
播放collapse死亡消失动画。
最后设置@battler_visible = false
此时:隐藏:false,死亡:true,伤害:nil,战斗伤害标志:false
第二部分:接下来我方用技能复活阵亡的队员
4-1很快过去了
此时:隐藏:false,死亡:true,伤害:nil,战斗伤害标志:false
@battler_visible = false
4-2
我方使用复活技能复活队友,计算出恢复值-541.
此时:隐藏:false,死亡:false,伤害:-541.,战斗伤害标志:false
@battler_visible = false
接着刷新@spriteset.update,等着因为上面都不成立,结果什么都没干
4-3
行动方(我方)动画不等于0,@animation1_id != 0
@active_battler.animation_id = @animation1_id
@active_battler.animation_hit = true
接着刷新@spriteset.update
此时:隐藏:false,死亡:false,伤害:-541.,战斗伤害标志:false
@battler_visible = false
所以,这一步什么都没做
4-4
首先,赋值给 对象方(死亡队员)动画id和命中
target.animation_id = @animation2_id
target.animation_hit = (target.damage != "Miss")
接着刷新@spriteset.update
此时:隐藏:false,死亡:false,伤害:-541.,战斗伤害标志:false
@battler_visible = false
所以,这一步什么都没做
4-5
此时因为第2步有恢复值-541,不等于空!=nil
所以damage_pop = true把伤害标志变成true(执行关键)
接着刷新@spriteset.update
此时:隐藏:false,死亡:false,伤害:-541.,战斗伤害标志:true
@battler_visible = false
所以执行下面的:这一步当中,appear,animation,damage都成立了
接下来update这三个动画次数
第三部分,为什么去掉@battler.damage == nil or @battler.damage_pop会发生,战斗图先出现,施法和复活、伤害值动画后出来。
4-2运行之前:隐藏:false,死亡:true,伤害:nil.,战斗伤害标志:false
@battler_visible = false
4-2开始
我方使用复活技能复活队友,死亡变成false,血量恢复506不为空
此时:@battler_visible = false直接成立了
隐藏:false,死亡:false,伤害:-506.,战斗伤害标志:false
接着刷新@spriteset.update,
因为只判断这两项,隐藏:false,死亡:false。appear人物出现了,鬼畜了
此时:@battler_visible = true
4-3开始
因为:@battler_visible = true
隐藏:false,死亡:false,伤害:-506.,战斗伤害标志:false
动画ID不等于nil
显示我方施法动画(反复update)
4-4开始
因为:@battler_visible = true
隐藏:false,死亡:false,伤害:-506.,战斗伤害标志:false
动画ID不等于nil
显示复活动画(反复update)
4-5开始(打开伤害开关)
因为:@battler_visible = true
隐藏:false,死亡:false,伤害:-506.,战斗伤害标志:true
显示恢复血量值(反复update)
所以造成,人物出现-施法动画-复活动画(被复活)-显示恢复血量
第四部分,我方人员中毒情况。
4-1这步
if @active_battler.hp > 0 and @active_battler.slip_damage?
@active_battler.slip_damage_effect
@active_battler.damage_pop = true
end
连续伤害判断成立。上面判断成立
4-1结束
接着刷新@spriteset.update
此时:隐藏:false,死亡:false,伤害:400(中毒扣的血量).,战斗伤害标志:true
@battler_visible = true
下面判断成立
if @battler.damage_pop
damage(@battler.damage, @battler.critical)
@battler.damage = nil
@battler.critical = false
@battler.damage_pop = false
end
反复刷新damage动画,刷新完成后进入4-2
此时:隐藏:false,死亡:false,伤害:nil.,战斗伤害标志:false
所以4-1刷新部分就进行扣血了。 |
|