事件-移动路径中有一个功能是“改变图像”,但在XP之后图像的改变无法再固定到哪一帧,而只能改变为3*4的一整格图像。
为了比较方便地实现行走图动画效果,就需要用到逐帧行走图的功能。
一时间搜索不到相关脚本,大概是因为大佬们都是自己随手写的吧,所以就出现了如下内容。
RUBY 代码 - #==============================================================================
- # 逐帧行走图 V1.1
- #------------------------------------------------------------------------------
- # - 脚本原作者为MCCF。此脚本没有使用规约,在符合当地法规的情况下可自由使用。
- #==============================================================================
- # - 在XP中,可强制设置人物行走图位于哪一帧。此脚本延续了这一设定,以实现更好的效果。
- #------------------------------------------------------------------------------
- # - 事件-移动路线中使用set_pattern(id)即可,id为指定的帧的下标(0-11)。
- #------------------------------------------------------------------------------
- # - 如想要清除强制设定请使用set_pattern(nil)的方法。
- #==============================================================================
- #==============================================================================
- # ■ Game_CharacterBase
- #------------------------------------------------------------------------------
- # 管理地图人物的基本类。是所有地图人物类的共通父类。拥有坐标、图片等基本信息。
- #==============================================================================
- class Game_CharacterBase
- #--------------------------------------------------------------------------
- # ● 定义实例变量
- #--------------------------------------------------------------------------
- attr_reader :pattern_id # 当前帧ID
- #--------------------------------------------------------------------------
- # ● 设置当前帧
- #--------------------------------------------------------------------------
- def set_pattern(index)
- @pattern_id = index
- end
- end
- #==============================================================================
- # ■ Sprite_Character
- #------------------------------------------------------------------------------
- # 地图人物的精灵。根据 Game_Character 类的实例自动变化。
- #==============================================================================
- class Sprite_Character
- #--------------------------------------------------------------------------
- # ● 更新源矩形
- #--------------------------------------------------------------------------
- alias framing_character_update_src_rect update_src_rect
- def update_src_rect
- return framing_character_update_src_rect unless@character.pattern_id
- index = @character.character_index
- x = @cw * (index % 4 * 3 + @character.pattern_id % 3)
- y = @ch * (index / 4 * 4 + @character.pattern_id / 3)
- self.src_rect.set(x, y, @cw, @ch)
- end
- end
复制代码
本帖来自P1论坛作者MCCF,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=481325 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |