#============================================================================== # ¡Ú ÃÔ¿µ ±â¼ú var 1.0 (07.2.12) by shun ¹ø¿ª: Àΰ£(jty1025) #------------------------------------------------------------------------------ # ¸Ê È­¸é¿¡¼­ ½ºÅ©·ÑÀ» Ä«¸Þ¶ódzÀ¸·Î ´ÊÃ߰ųª # Ç÷¹À̾î¿Í´Â µ¶¸³½ÃÄÑ ½ºÅ©·Ñ ½ÃÅ°°Å³ª ÇÒ ¼ö ÀÖ½À´Ï´Ù. #============================================================================== module SIMP #-------------------------------------------------------------------------- # ¡Û ¼³Á¤ #-------------------------------------------------------------------------- # # ½ºÅ©·Ñ ¼Óµµ # CAMERA_MIN_SPEED = 1 # ÃÖÀúÇÑÀÇ ½ºÅ©·Ñ ¼Óµµ CAMERA_DELEY = 2 # ¼Óµµ º¸Á¤ (°ªÀÌ Å« ¸¸Å­ ´Ê´Â´Ù) # # µ¶¸³ ½ºÅ©·Ñ # CAMERA_SCROLL_SWITCH = 48 # ½ºÅ©·Ñ ±ÝÁö ½ºÀ§Ä¡ÀÇ ¹øÈ£ CAMERA_SCROLL_KEY = Input::A # ½ºÅ©·ÑÀ» °³½ÃÇÏ´Â ¹öÆ° (Input::<¹öÆ°>) CAMERA_SCROLL_SPEED = 5 # ½ºÅ©·Ñ ÇÏ´Â ±âº» ¼Óµµ CAMERA_SCROLL_DIR8 = true # 8 ¹æÇâ ÀÔ·Â end class Game_Map #-------------------------------------------------------------------------- # ¡Ü °ø°³ ÀνºÅϽº º¯¼ö #-------------------------------------------------------------------------- attr_writer :real_display_x # X ÁÂÇ¥ (½ÇÁÂÇ¥) attr_writer :real_display_y # Y ÁÂÇ¥ (½ÇÁÂÇ¥) #-------------------------------------------------------------------------- # ¡Ü ¿ÀºêÁ§Æ® ÃʱâÈ­ #-------------------------------------------------------------------------- alias camera_initialize initialize def initialize camera_initialize @real_display_x = 0 @real_display_y = 0 end #-------------------------------------------------------------------------- # ¡Ü ¼Â¾÷ # map_id : ¸Ê ID #-------------------------------------------------------------------------- alias camera_setup setup def setup(map_id) camera_setup(map_id) @real_display_x = 0 @real_display_y = 0 end #-------------------------------------------------------------------------- # ¡Ü Ç¥½Ã X ÁÂÇ¥ * 128 #-------------------------------------------------------------------------- def display_x return @real_display_x end #-------------------------------------------------------------------------- # ¡Ü Ç¥½Ã Y ÁÂÇ¥ * 128 #-------------------------------------------------------------------------- def display_y return @real_display_y end #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- alias camera_update update def update camera_update dx = @display_x - @real_display_x unless dx == 0 speed = get_speed(dx.abs) distance = 2 ** speed if dx > 0 @real_display_x = [@real_display_x + distance, @display_x].min else @real_display_x = [@real_display_x - distance, @display_x].max end end dy = @display_y - @real_display_y unless dy == 0 speed = get_speed(dy.abs) distance = 2 ** speed if dy > 0 @real_display_y = [@real_display_y + distance, @display_y].min else @real_display_y = [@real_display_y - distance, @display_y].max end end end #-------------------------------------------------------------------------- # ¡Û ½ºÅ©·Ñ ¼Óµµ¸¦ Ãëµæ # distance : ¿òÁ÷ÀÌ´Â ¸ñÇ¥±îÁöÀÇ °Å¸® #-------------------------------------------------------------------------- def get_speed(distance) return [SIMP::CAMERA_MIN_SPEED, distance / 32 - SIMP::CAMERA_DELEY].max end end class Game_Player < Game_Character #-------------------------------------------------------------------------- # ¡Ü ÇÁ·¹ÀÓ °»½Å #-------------------------------------------------------------------------- alias camera_update update def update # À̵¿Áß, À̺¥Æ® ½ÇÇàÁß, À̵¿ ·çÆ® °­Á¦Áß, # ¸Þ¼¼Áö À©µµ¿ì Ç¥½ÃÁßÀÇ ¸ÓÁö¾Ê¾Æµµ ¾Æ´Ñ °æ¿ì unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing # ½ºÅ©·Ñ Å°°¡ ¹Ð·ÈÀ» °æ¿ì, µ¶¸³ ½ºÅ©·Ñ Ç÷¡±×¸¦ À¯È¿ÇÏ°Ô ÇÑ´Ù if Input.trigger?(SIMP::CAMERA_SCROLL_KEY) and @scroll != true and $game_switches[SIMP::CAMERA_SCROLL_SWITCH] != true # °áÁ¤ SE ¸¦ ¿¬ÁÖ $game_system.se_play($data_system.decision_se) @scroll = true Input.update end end # µ¶¸³ ½ºÅ©·ÑÁßÀÇ °æ¿ì if @scroll super update_scroll else camera_update end end #-------------------------------------------------------------------------- # ¡Û ÇÁ·¹ÀÓ °»½Å (µ¶¸³ ½ºÅ©·Ñ) #-------------------------------------------------------------------------- def update_scroll # ½ºÅ©·Ñ Å°°¡ ¹Ð·ÈÀ» °æ¿ì if Input.trigger?(SIMP::CAMERA_SCROLL_KEY) # ĵ½½ SE ¸¦ ¿¬ÁÖ $game_system.se_play($data_system.cancel_se) # Ç÷¹À̾ È­¸éÀ» µÇµ¹¸°´Ù center(@x, @y) # µ¶¸³ ½ºÅ©·Ñ Ç÷¡±×¸¦ ¹«È¿·Î ÇÑ´Ù @scroll = false return end distance = 2 ** SIMP::CAMERA_SCROLL_SPEED # ¹æÇâ ¹öÆ°ÀÌ ¹Ð¸®°í ÀÖÀ¸¸é, ±× ¹æÇâ¿¡ ½ºÅ©·Ñ dir = (SIMP::CAMERA_SCROLL_DIR8 ? Input.dir8 : Input.dir4) case dir when 1 $game_map.scroll_down(distance) $game_map.scroll_left(distance) when 2 $game_map.scroll_down(distance) when 3 $game_map.scroll_down(distance) $game_map.scroll_right(distance) when 4 $game_map.scroll_left(distance) when 6 $game_map.scroll_right(distance) when 7 $game_map.scroll_left(distance) $game_map.scroll_up(distance) when 8 $game_map.scroll_up(distance) when 9 $game_map.scroll_right(distance) $game_map.scroll_up(distance) end end #-------------------------------------------------------------------------- # ¡Ü È­¸é Áß¾Ó¿¡ ¿Àµµ·Ï(µíÀÌ) ¸ÊÀÇ Ç¥½Ã À§Ä¡¸¦ ¼³Á¤ #-------------------------------------------------------------------------- alias camera_center center def center(x, y) camera_center(x, y) $game_map.real_display_x = $game_map.display_x $game_map.real_display_y = $game_map.display_y end end #--------------------------------------------------------------------------