DEMO:
Demo – Version 1.0 >
#------------------------------------------------------------------------------# # Galv's Cam Slide Control #------------------------------------------------------------------------------# # For: RPGMAKER VX ACE # Version 1.0 #------------------------------------------------------------------------------# # 2015-10-09 - Version 1.0 - release #------------------------------------------------------------------------------# # This script gives the camera a slide effect and also more control of where # the camera is focused. You can set it to follow an event or scroll to an x,y # position on the map. #------------------------------------------------------------------------------- # SCRIPT CALL #------------------------------------------------------------------------------- # $game_map.camslide(status) # status can be true or false (default true) # # # when false - cam reverts to default, # # does not slide and 'scroll map' event works # # # when true - slide effect and targeting # # works but 'scroll map' does not. # # $game_map.camtarget(x,s) # x is event ID # # s is speed of camera scroll (800 default) # # the greater the speed the slower the scroll # # sets camslide to true automatically. # # $game_map.camtarget_xy(x,y,s) # x,y are the x,y co-ordinates on the map. # # s is speed (same as above) # # sets camslide to true automatically. # # $game_map.cam_default # sets camtarget back to player # # sets camslide to true automatically. #------------------------------------------------------------------------------- class Game_Player < Game_Character alias galv_scroll_gp_gc_update_scroll update_scroll def update_scroll(last_real_x, last_real_y) return if !$game_map.free_cam galv_scroll_gp_gc_update_scroll(last_real_x, last_real_y) end end class Game_Map attr_accessor :free_cam attr_accessor :camtarget alias galv_scroll_gm_initialize initialize def initialize galv_scroll_gm_initialize cam_default end def camslide(status) @free_cam = !status end alias galv_scroll_gm_setup setup def setup(map_id) cam_default galv_scroll_gm_setup(map_id) end def camtarget(x, spd = 800) @camtarget = @events[x] @free_cam = false @camspeed = spd end def camtarget_xy(x,y,spd = 800) @camtarget = Camxytarget.new @camtarget.camxy(x,y) @free_cam = false @camspeed = spd end def cam_default(speed = 800) @camtarget = $game_player @free_cam = false @camspeed = speed end alias galv_scroll_gm_update_scroll update_scroll def update_scroll return galv_scroll_gm_update_scroll if @free_cam @scroll_rest = 0 cw = (Graphics.width / 2) ch = (Graphics.height / 2) sx = 0.016 + (@camtarget.screen_x - cw).abs / @camspeed sy = 0.016 + (@camtarget.screen_y - ch).abs / @camspeed y_pos = @camtarget.screen_y.to_i x_pos = @camtarget.screen_x.to_i if y_pos < ch $game_map.scroll_up(sy) elsif y_pos > ch $game_map.scroll_down(sy) end if x_pos < cw $game_map.scroll_left(sx) elsif x_pos > cw $game_map.scroll_right(sx) end end end class Camxytarget < Game_CharacterBase def camxy(x,y) @x = x @y = y @real_x = @x @real_y = @y end end