캐릭터의 이동을 8방향으로 확장 & 데쉬 스크립트입니다. 데쉬 버튼은 Input ::{ 버튼명 } 으로 지정합니다. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #_/ ◆데쉬&8방향 이동 - KGC_Dash_8DirMove◆ #_/---------------------------------------------------------------------------- #_/ 맵 이동시의 데쉬&8방향 이동 기능을 추가합니다. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ #============================================================================== # ★ 커스터마이즈 항목 ★ #============================================================================== module KGC # ◆데쉬 버튼 D8DM_DASH_BUTTON = Input::A # ◆데쉬 속도 D8DM_DASH_SPEED = 5 # ◆보행 속도 D8DM_WALK_SPEED = 4 end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ $imported["Dash_8DirMove"] = true #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Game_System #============================================================================== class Game_System #-------------------------------------------------------------------------- # ● 공개 인스턴스 변수 #-------------------------------------------------------------------------- attr_accessor :dash_permit # 데쉬 허가 플래그 attr_accessor :dir8_permit # 8방향 이동 허가 플래그 #-------------------------------------------------------------------------- # ● 오브젝트 초기화 #-------------------------------------------------------------------------- alias initialize_KGC_Dash_8DirMove initialize def initialize # 원래의 처리를 실행 initialize_KGC_Dash_8DirMove @dash_permit, @dir8_permit = true, true end end #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★ #============================================================================== # ■ Game_Player #============================================================================== class Game_Player < Game_Character #-------------------------------------------------------------------------- # ● フレ?ム更新 #-------------------------------------------------------------------------- def update # ロ?カル??に移動中かどうかを記憶 last_moving = moving? # 移動中、イベント?行中、移動ル?ト?制中、 # メッセ?ジウィンドウ表示中のいずれでもない場合 unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing # 向きを保存 direction = @direction # 方向ボタンが押されていれば、その方向へプレイヤ?を移動 if $game_system.dir8_permit case Input.dir8 when 1 # 左下 move_left move_down # 向き固定でない場合 unless @direction_fix # 右向きだった場合は左を、上向きだった場合は下を向く @direction = (direction == 6 ? 4 : direction == 8 ? 2 : direction) end when 2 # 下 move_down when 3 # 右下 move_down move_right # 向き固定でない場合 unless @direction_fix # 左向きだった場合は右を、上向きだった場合は下を向く @direction = (direction == 4 ? 6 : direction == 8 ? 2 : direction) end when 4 # 左 move_left when 6 # 右 move_right when 7 # 左上 move_up move_left # 向き固定でない場合 unless @direction_fix # 右向きだった場合は左を、下向きだった場合は上を向く @direction = (direction == 6 ? 4 : direction == 2 ? 8 : direction) end when 8 # 上 move_up when 9 # 右上 move_right move_up # 向き固定でない場合 unless @direction_fix # 左向きだった場合は右を、下向きだった場合は上を向く @direction = (direction == 4 ? 6 : direction == 2 ? 8 : direction) end end else case Input.dir4 when 2 move_down when 4 move_left when 6 move_right when 8 move_up end end # ダッシュが許可されており、かつダッシュボタンが押されている場合 if $game_system.dash_permit && Input.press?(KGC::D8DM_DASH_BUTTON) # ダッシュ速度に?更 @move_speed = KGC::D8DM_DASH_SPEED else # ?行速度に?更 @move_speed = KGC::D8DM_WALK_SPEED end end # ロ?カル??に座標を記憶 last_real_x = @real_x last_real_y = @real_y super # キャラクタ?が下に移動し、かつ?面上の位置が中央より下の場合 if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y # マップを下にスクロ?ル $game_map.scroll_down(@real_y - last_real_y) end # キャラクタ?が左に移動し、かつ?面上の位置が中央より左の場合 if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X # マップを左にスクロ?ル $game_map.scroll_left(last_real_x - @real_x) end # キャラクタ?が右に移動し、かつ?面上の位置が中央より右の場合 if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X # マップを右にスクロ?ル $game_map.scroll_right(@real_x - last_real_x) end # キャラクタ?が上に移動し、かつ?面上の位置が中央より上の場合 if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y # マップを上にスクロ?ル $game_map.scroll_up(last_real_y - @real_y) end # 移動中ではない場合 unless moving? # 前回プレイヤ?が移動中だった場合 if last_moving # 同位置のイベントとの接?によるイベント起動判定 result = check_event_trigger_here([1,2]) # 起動したイベントがない場合 if result == false # デバッグモ?ドが ON かつ CTRL キ?が押されている場合を除き unless $DEBUG and Input.press?(Input::CTRL) # エンカウント カウントダウン if @encounter_count > 0 @encounter_count -= 1 end end end end # C 버튼이 밀렸을 경우 if Input.trigger?(Input::C) # 同位置および正面のイベント起動判定 check_event_trigger_here([0]) check_event_trigger_there([0,1,2]) end end end end