#==============================================================================
# ■ 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”:

然后在你需要加影子功能的事件前面写上“影子”两个字,
事件设置点击看这里
效果截图:
