这个脚本比较简洁,可以直接改为用开关控制
不过要注意的一点是,弹性地图滚动时,会自动将主角归位为画面中心,所以这才出现了你的地图移动无效bug
如果需要修复这个bug请去找原作者,可能该精简版删去了对应的bug修复处理。
#============================================================================== # ■ 弹性滚动地图 V 1.00 BY SLICK #------------------------------------------------------------------------------ # 处理主角的类。事件启动的判定、以及地图的滚动等功能。 # 本类的实例请参考 $game_player。 # 我:。。。这个黄金版已经被改的面目全非了 #============================================================================== class Game_Player < Game_Character #此处更改控制地图移动方式的开关的ID # - 当该序号的开关开启时,为默认地图移动方式 # - 当该序号的开关关闭时,为弹性滚动(注意:若主角不为画面中心,则地图画面会自动归位为主角中心) S_ID = 10 MOVESPEA = 0.265625#这数值。。。囧 alias eagle_update_scroll_move_map update_scroll def update_scroll(last_real_x, last_real_y) if($game_switches[S_ID]) eagle_update_scroll_move_map(last_real_x, last_real_y) return end ax1 = $game_map.adjust_x(last_real_x) ay1 = $game_map.adjust_y(last_real_y) ax2 = $game_map.adjust_x(@real_x) ay2 = $game_map.adjust_y(@real_y) movespeb = (2 ** (@move_speed+1))*MOVESPEA movesped = movespeb / Graphics.width movespec = movespeb / Graphics.height tmp=center_x-ax2 $game_map.scroll_left(movesped*tmp) if tmp>0 $game_map.scroll_right(-movesped*tmp) if tmp<0 tmp=center_y-ay2 $game_map.scroll_up(movespec*tmp) if tmp>0 $game_map.scroll_down(-movespec*tmp) if tmp<0 end end
#==============================================================================
# ■ 弹性滚动地图 V 1.00 BY SLICK
#------------------------------------------------------------------------------
# 处理主角的类。事件启动的判定、以及地图的滚动等功能。
# 本类的实例请参考 $game_player。
# 我:。。。这个黄金版已经被改的面目全非了
#==============================================================================
class Game_Player < Game_Character
#此处更改控制地图移动方式的开关的ID
# - 当该序号的开关开启时,为默认地图移动方式
# - 当该序号的开关关闭时,为弹性滚动(注意:若主角不为画面中心,则地图画面会自动归位为主角中心)
S_ID = 10
MOVESPEA = 0.265625#这数值。。。囧
alias eagle_update_scroll_move_map update_scroll
def update_scroll(last_real_x, last_real_y)
if($game_switches[S_ID])
eagle_update_scroll_move_map(last_real_x, last_real_y)
return
end
ax1 = $game_map.adjust_x(last_real_x)
ay1 = $game_map.adjust_y(last_real_y)
ax2 = $game_map.adjust_x(@real_x)
ay2 = $game_map.adjust_y(@real_y)
movespeb = (2 ** (@move_speed+1))*MOVESPEA
movesped = movespeb / Graphics.width
movespec = movespeb / Graphics.height
tmp=center_x-ax2
$game_map.scroll_left(movesped*tmp) if tmp>0
$game_map.scroll_right(-movesped*tmp) if tmp<0
tmp=center_y-ay2
$game_map.scroll_up(movespec*tmp) if tmp>0
$game_map.scroll_down(-movespec*tmp) if tmp<0
end
end
|