#============================================================================== # ■ RGSS2 キャラクター常時回転 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # キャラクターがマップ上で回転します。移動中も回転し続けます。 # この状態では向き固定の状態に関わらず、通常の方法では向きが固定されません。 # なお、プレイヤーに設定した場合は # 四方に向きを変え続ける為、決定キーでの「調べる」が # 非常に使いづらくなりますが、これは仕様とします。 # 基本的にゲーム内イベント中の演出や、特定のイベントへの付与を想定しています。 #------------------------------------------------------------------------------ # ★イベントに設定する場合 # # イベントの名前で下記の様に記述します。 # # <回転移動:15> # # これで15カウントごとに向きが変わる設定となります。 #------------------------------------------------------------------------------ # ★イベントコマンドでプレイヤーやイベントの回転設定を変更する場合 # # 移動ルートの設定で、スクリプトで下記の様に記述します。 # # rolling_speed_set(10) #------------------------------------------------------------------------------ # ★どちらの場合にも共通する事として # 回転移動の設定を0にする事で、回転移動をOFFにする事が出来ます。 #============================================================================== module ROLLING_MOVE WORD = "回転移動" end class Game_Character def rolling_speed_set(speed) #回転移動変数を取得。 @rolling_move = speed #回転移動カウントを初期化。 @rolling_count = 0 end alias update_rolling update def update #回転移動のチェック。 roliing_check #本来の処理を実行。 update_rolling end alias update_animation_rolling update_animation def update_animation #回転移動変数が設定されている場合は回転移動カウントを加算。 if @rolling_move > 0 @rolling_count += 1 #回転移動カウントが回転移動変数以上になった時、向きを強制変更する。 if @rolling_count >= @rolling_move case @direction when 2 @direction = 4 when 4 @direction = 8 when 6 @direction = 2 when 8 @direction = 6 end @rolling_count = 0 end end #本来の処理を実行。 update_animation_rolling end def roliing_check #回転移動データがnilの場合、初期化する。 if @rolling_move == nil @rolling_move = 0 @rolling_count = 0 end end alias set_direction_rolling set_direction def set_direction(d) #回転変数が設定されている場合は通常の向き変更は行わない。 set_direction_rolling(d) if @rolling_move == 0 end end class Game_Event < Game_Character alias initialize_rolling initialize def initialize(map_id, event) #回転移動を初期化。 rolling_speed_set(0) #回転移動カウントを初期化。 @rolling_count = 0 #本来の処理を実行。 initialize_rolling(map_id, event) #回転移動データ取得。 first_rolling_speed_set end def first_rolling_speed_set #回転移動データ取得。 memo = @event.name.scan(/<#{ROLLING_MOVE::WORD}[::](\S+)>/).flatten #データを取得出来無かった場合は0に設定する。 @rolling_move = (memo != nil && !memo.empty?) ? memo[0].to_i : 0 end end class Game_Player < Game_Character alias initialize_rolling initialize def initialize #回転移動を初期化。 rolling_speed_set(0) #回転移動カウントを初期化。 @rolling_count = 0 #本来の処理を実行。 initialize_rolling end alias refresh_rolling refresh def refresh #本来の処理を実行する。 refresh_rolling #アクターの回転変数を反映する。 @rolling_move = 0 if @rolling_move == nil end end