#============================================================================== # ■ RGSS2&3兼用 敵座標調整 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 敵の座標を敵グループ設定データから更に調整します。 #------------------------------------------------------------------------------ # ★使用例 #------------------------------------------------------------------------------ # ☆出現時、初期座標を調整する場合(全てエネミーのメモ欄を使用します) #------------------------------------------------------------------------------ # X座標を+50する場合。(右に50) # # <初期X座標調整:50> # # Y座標を-100する場合。(下に100) # # <初期Y座標調整:-100> # # Z座標を+100する場合。(正面方向に100) # # <初期Z座標調整:100> #------------------------------------------------------------------------------ # ☆戦闘中のイベントで敵のX・Y・Z座標を変更する場合 #------------------------------------------------------------------------------ # 敵グループID1の敵のX座標を+50する場合。(右に50) # (この素材スクリプトがなくても出来ます) # # $game_troop.members[0].screen_x += 50 # # 敵グループID2の敵のY座標を-100する場合。(下に100) # (この素材スクリプトがなくても出来ます) # # $game_troop.members[1].screen_y -= 100 # # 敵グループID3の敵のZ座標を+100する場合。(正面方向に100) # (この素材スクリプトがなければ不可能です) # # $game_troop.members[2].enemy_z_adjust += 100 #============================================================================== module ENEMY_XYZ X_ADJUST = "初期X座標調整" Y_ADJUST = "初期Y座標調整" Z_ADJUST = "初期Z座標調整" end class Game_Troop < Game_Unit #-------------------------------------------------------------------------- # セットアップ #-------------------------------------------------------------------------- alias setup_xy_reset setup def setup(troop_id) #本来の処理を実行。 setup_xy_reset(troop_id) #メンバー別に処理を行う。 members.each do |member| next unless $data_enemies[member.enemy_id] member.screen_x += $data_enemies[member.enemy_id].enemy_x_adjust member.screen_y += $data_enemies[member.enemy_id].enemy_y_adjust end end end class RPG::Enemy attr_accessor :enemy_x_adjust attr_accessor :enemy_y_adjust attr_accessor :enemy_z_adjust #-------------------------------------------------------------------------- # X座標調整値 #-------------------------------------------------------------------------- def enemy_x_adjust #キャッシュがあればキャッシュを返す。 return @enemy_x_adjust if @enemy_x_adjust != nil #エネミーのメモ欄からデータを取得。 memo = @note.scan(/<#{ENEMY_XYZ::X_ADJUST}[::](\S+)>/).flatten #データがない場合は0とする。 @enemy_x_adjust = memo != nil && !memo.empty? ? memo[0].to_i : 0 #データを返す。 @enemy_x_adjust end #-------------------------------------------------------------------------- # Y座標調整値 #-------------------------------------------------------------------------- def enemy_y_adjust #キャッシュがあればキャッシュを返す。 return @enemy_y_adjust if @enemy_y_adjust != nil #エネミーのメモ欄からデータを取得。 memo = @note.scan(/<#{ENEMY_XYZ::Y_ADJUST}[::](\S+)>/).flatten #データがない場合は0とする。 @enemy_y_adjust = memo != nil && !memo.empty? ? memo[0].to_i : 0 #データを返す。 @enemy_y_adjust end #-------------------------------------------------------------------------- # Z座標調整値 #-------------------------------------------------------------------------- def enemy_z_adjust #キャッシュがあればキャッシュを返す。 return @enemy_z_adjust if @enemy_z_adjust != nil #エネミーのメモ欄からデータを取得。 memo = @note.scan(/<#{ENEMY_XYZ::Z_ADJUST}[::](\S+)>/).flatten #データがない場合は0とする。 @enemy_z_adjust = memo != nil && !memo.empty? ? memo[0].to_i : 0 #データを返す。 @enemy_z_adjust end end class Game_Enemy < Game_Battler #-------------------------------------------------------------------------- # バトル画面 Z 座標の取得 #-------------------------------------------------------------------------- alias screen_z_xyz_ajust screen_z def screen_z #本来の処理を実行し、Z座標調整値を足した値を返す。 screen_z_xyz_ajust + enemy_z_adjust end #-------------------------------------------------------------------------- # Z座標調整値 #-------------------------------------------------------------------------- def enemy_z_adjust #Z座標調整値が存在しない場合は取得する。 @enemy_z_adjust = $data_enemies[@enemy_id].enemy_z_adjust if @enemy_z_adjust == nil #Z座標調整値を返す。 @enemy_z_adjust end #-------------------------------------------------------------------------- # Z座標調整値の変更 #-------------------------------------------------------------------------- def enemy_z_adjust=(data) @enemy_z_adjust = data end end