加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 garfeng 于 2016-8-18 23:24 编辑
当人物坐标y比事件大时,即人物更靠近屏幕,应该遮挡住事件,而人物y比事件小,也就是距离屏幕更远时,人物被事件遮挡。32x32的二头身有微弱的这个问题,32x48的三头身,这个问题则非常严重。
上次做 拐跑魔王被这个问题搞跪了,只能在事件周围设置一圈不可通行来偷偷避过去。
可能讲不清楚,就是如下图红框部分的效果:
红框右侧为普通事件,在人物下方就一直在人物下方。
用事件绕过去。
代码:
# 使用方法,添加事件,在事件名里添加 ol # y相同时,由事件页那里的高度来决定遮挡。 class Game_Event < Game_Character def check_pos_of_player if @page origin_priority = @page.priority_type else origin_priority = 1 end if !@overlay_set return origin_priority end dy = $game_player.real_y - self.real_y if dy > 0 # 人挡住了事件 return 0 elsif dy < 0 # 事件挡住了人 return 2 end return origin_priority end alias overlay_back_setup_page_settings setup_page_settings def setup_page_settings overlay_back_setup_page_settings if self.instance_variable_get(:@event).name =~ /ol/ #p self.instance_variable_get(:@event).name @overlay_set = true else @overlay_set = false end end #-------------------------------------------------------------------------- # ● 更新画面 #-------------------------------------------------------------------------- alias overlay_back_update update def update @priority_type = check_pos_of_player overlay_back_update end end
# 使用方法,添加事件,在事件名里添加 ol
# y相同时,由事件页那里的高度来决定遮挡。
class Game_Event < Game_Character
def check_pos_of_player
if @page
origin_priority = @page.priority_type
else
origin_priority = 1
end
if !@overlay_set
return origin_priority
end
dy = $game_player.real_y - self.real_y
if dy > 0 # 人挡住了事件
return 0
elsif dy < 0 # 事件挡住了人
return 2
end
return origin_priority
end
alias overlay_back_setup_page_settings setup_page_settings
def setup_page_settings
overlay_back_setup_page_settings
if self.instance_variable_get(:@event).name =~ /ol/
#p self.instance_variable_get(:@event).name
@overlay_set = true
else
@overlay_set = false
end
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
alias overlay_back_update update
def update
@priority_type = check_pos_of_player
overlay_back_update
end
end
|