#============================================================================== # ■ Sprite_Shadow_Module #------------------------------------------------------------------------------ # 影子 # By 迅雷進 #============================================================================== module Sprite_Shadow_Module #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- def dispose # 当影子出现时 if @character_shadow != nil then # 解放影子 @character_shadow.bitmap.dispose @character_shadow.dispose end super end #-------------------------------------------------------------------------- # ● 影子的作成 #-------------------------------------------------------------------------- def character_shadow_set # 生成影子使用的脚本 @character_shadow = Sprite.new(self.viewport) # 显示影子 @character_shadow.bitmap = RPG::Cache.picture("shadow") # 影子在这里设定透明度 @character_shadow.opacity = (self.opacity / 2) - 32 # 刷新影子 update_character_shadow end #-------------------------------------------------------------------------- # ● 影子的更新 #-------------------------------------------------------------------------- def update_character_shadow # 根本影子不存在的情况 if @character_shadow == nil then # 处理完毕 return end # 更新各信息 @character_shadow.x = self.x - self.ox @character_shadow.y = self.y - (self.oy / 2.5) # 角色和影子之间的距离 @character_shadow.visible = (self.visible and @character_name != "") @character_shadow.opacity = (self.opacity / 2) - 32 end end #============================================================================== # ■ Game_Event #------------------------------------------------------------------------------ # 处理事件的类。条件判断、事件页的切换、并行处理、执行事件功能 # 在 Game_Map 类的内部使用。 #============================================================================== class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● 公開定义实例变量 #-------------------------------------------------------------------------- attr_reader :event # 事件 end #============================================================================== # ■ Sprite_Character #------------------------------------------------------------------------------ # 角色显示用脚本。监视 Game_Character 类的实例、 # 自动变化脚本状态。 #============================================================================== class Sprite_Character < RPG::Sprite #-------------------------------------------------------------------------- # ● 定义实例变量 #-------------------------------------------------------------------------- include(Sprite_Shadow_Module) # 影子的描写 #-------------------------------------------------------------------------- # ● 初始化对像 # character : 角色 (Game_Character) #-------------------------------------------------------------------------- alias :JinRaiXin_Character_Shadow_initialize :initialize def initialize(viewport, character = nil) # 实行原来的处理 JinRaiXin_Character_Shadow_initialize(viewport, character) # 按照角色的类型作出分歧 case @character # 角色 when Game_Player then # 影子的作成 character_shadow_set # 事件 when Game_Event then # 在指定的事件的名称前面加上 影子 这两个子 if @character.event.name.include?("影子") == true then # 影子的作成 character_shadow_set end end end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- alias :update_JinRaiXin_Character_Shadow :update def update # 实行原来的处理 update_JinRaiXin_Character_Shadow # 刷新影子 update_character_shadow end end
使用方法: 将一下这张图画放进 Picture 的文件夹去并改名为“shadow”:
然后在你需要加影子功能的事件前面写上“影子”两个字, 事件设置点击看这里 效果截图:
|