Project1

标题: 战斗时复活同伴动画顺序怎么调整? [打印本页]

作者: thyzqwy    时间: 2019-10-25 23:49
标题: 战斗时复活同伴动画顺序怎么调整?
战斗时出现一个问题,就是同伴死亡后进行复活,无论是药品还是技能,总是出现人物先站起来,然后技能动画才开始播放的问题,怎么调整能使先播放效果动画,然后死亡的人物再站起来?
作者: miantouchi    时间: 2019-10-26 20:51
本帖最后由 miantouchi 于 2019-10-26 21:33 编辑

肯定是你改代码了呗你应该详细描述下,我之前也遇到过这种问题
以下是我之前发的帖子,有RB和刀王的详细回答,你可以看下。
https://rpg.blue/thread-477228-1-1.html
https://rpg.blue/thread-477355-1-1.html
作者: thyzqwy    时间: 2019-10-27 10:53
仔细看了之后算是 明白了,原来不是被复活的人物先站起来,然后播放效果动画的,应该是同时进行的。可能是人物站起来之后动画还没有播放完,所以造成的错觉。有什么办法可以做到,先播放完动画,然后人物再站起来的?做个顺序,不要同时进行的?
作者: 89444640    时间: 2019-10-27 14:00
默认的动画是这样,先出手然后对象然后显示伤害。
结果其实在你选择最后一个角色指令的时候就计算出来了,剩下的是表演过程,现在就是要让表演正常。
可以有几种方法,
在没动过原始脚本的情况下,改流程,增加一个复活,插在对象方动画播放完毕后,显示伤害前,如果是用过闪烁就蹦伤害需要具体分析,这个只能看脚本才知道(我看不懂得找懂得人)
所有复活动画第一帧全屏白光,然后随便播放其他光效动画,不要人物复活过程的动作,角色时候待机死亡两种情况的动作。

作者: miantouchi    时间: 2019-10-27 18:57
本帖最后由 miantouchi 于 2019-10-27 23:07 编辑
thyzqwy 发表于 2019-10-27 10:53
仔细看了之后算是 明白了,原来不是被复活的人物先站起来,然后播放效果动画的,应该是同时进行的。可能是 ...


我给你发下我当初分析的一个运行流程,我的都是笨办法,但是只要你明白了是哪个流程出现问题了,才能解决你自己脚本的问题。
也就是说虽然看大RB和刀王的说明,理论知道了,但是还得自己动手去查看。
认真去分析每个过程,你才能找到问题原因,你可以多加点注释。

首先你要清楚第四阶段的刷新机制过程。
人物死亡的情况,@battler_visible == false 也就是红框处的代码成立,下面的都不成立。
这期间要想让人物appear
必须让
@battler.hidden ==false 并且 @battler.dead? ==fase
以及 @battler.damage == nil 或者 @battler.damage_pop ==true 这两个任意一个成立。

实际上关键点在@battler.damage_pop ==true,你可以仔细搜索下,只有4-5才打开这个开关的。

第一.也就是我们默系统的正常流程:接下来我方用技能复活阵亡的队员
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都成立了
多说一句
接下来进入Scene_Battle当中update刷新update这三个动画次数
会卡在这句话,直到刷新3个 动作完毕,@spriteset.effect?才为false
# 显示效果中的情况下
    if @spriteset.effect?
      return
    end
直到显示完毕才放行,进行下面步骤的进行。


第二部分,为什么去掉@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)
所以造成,人物出现-施法动画-复活动画(被复活)-显示恢复血量

1.png (56.23 KB, 下载次数: 9)

1.png





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1