Project1

标题: 怎样将某事件动画的状态复制到另一事件上? [打印本页]

作者: KB.Driver    时间: 2018-12-29 00:05
标题: 怎样将某事件动画的状态复制到另一事件上?
本帖最后由 KB.Driver 于 2018-12-29 00:06 编辑

复制动画(animation_id)很简单,但是有没有办法连帧数一起复制过去?
比如有事件A和B,A的动画进行到第10帧的时候,有没有办法让B从动画的第10帧开始?

补充:动画的内容是目标闪烁,因为突然切换动画的话会导致亮度转不过去
主要的目的是想把亮度从A继承到B上


作者: RMVXA    时间: 2018-12-29 09:33
本帖最后由 RMVXA 于 2018-12-29 09:43 编辑

我的话只能绕开这种麻烦的问题吧,比如用这种效果:做一个奇数帧的动画X,第一帧目标闪烁@1,第二帧不闪烁,第三帧目标闪烁@1……  然后在事件A显示动画X(等待结束)后,事件B再显示X,就能做到类似的效果……
作者: 百里_飞柳    时间: 2018-12-29 13:32
本帖最后由 百里_飞柳 于 2018-12-29 16:00 编辑

在 Sprite_Base 类里的 @ani_duration 是用于计时的
你在Sprite_Battler类里改一下,把它和id一起赋值过去?




参考流程:
- 在Sprite_Character类里定义方法B,传入另一个Sprite_Character类型参数用于处理动画复制,推荐按照start_animation方法写,再覆盖@ani_duration的值再加1(保证不会因额外调用update导致帧数差异),再调用一次update_animation,确保立即有显示
- 在Spriteset_Map类里定义方法C,传入Game_Character类参数c,返回@character_sprites人物精灵数组中绑定了c对象的精灵
- 在Game_Interpreter类里新建方法A,用于处理动画的复制(从一个Game_Character类的对象复制到另一个),方法传入一个源character对象a1,一个目标对象a2(可能是队列角色,可能是事件),(记得给Scene_Map加上访问spriteset变量的attr_reader)通过调用 SceneManager.scene.spriteset 的方法C获取a1和a2的精灵,再调用a2精灵的方法B(a1)
作者: KB.Driver    时间: 2018-12-29 22:20
百里_飞柳 发表于 2018-12-29 13:32
在 Sprite_Base 类里的 @ani_duration 是用于计时的
你在Sprite_Battler类里改一下,把它和id一起赋值过去 ...

照着写了然后测试了一下,动画确实可以按帧数复制过去√

可惜的是我做的是闪烁对象,那个好像不是复制动画就可以的……
到底是哪个参数呢……要是找到了就能一起复制过去了




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