#◆◇◆◇◆ キャラクターコラプス ver 1.20 ◇◆◇◆◇ # サポート掲示板 http://www2.ezbbs.net/21/minto-aaa/ # by みんと =begin 更新履歴 ver 1.20(2008/2/19) 併用性を向上、及び仕様の大幅変更。 説明 ※ 旧バージョンとは大きく使用が変更されました。 イベントなどのマップ上のキャラクターに対して、 コラプスの演出を実行できるようになります。 コラプスを実行するには、 イベントのスクリプトで $scene.call_collapse_effect(id, type) と入力してください。 id はイベントキャラクターのID、 type は演出タイプをそれぞれ表しています。 なお、id 0 で「このイベント」、 id -1 で「プレイヤー」となります。 演出タイプには以下の5種類あります。 タイプ0 特に演出を行いません。 タイプ 1 敵が縦に細く伸びて消えます。 タイプ 2 敵が横に伸びて消えます。 タイプ 3 敵が一旦縦に縮んだ後、縦に細く伸びて消えます。 タイプ 4 敵が縦に細く伸びながら回転して消えます(処理に負荷がかかります) 記述例 $scene.call_collapse_effect(1, 1) ID 1 のイベントに対し、キャラを縦に細く伸ばして消します。 $scene.call_collapse_effect(1, 2) $scene.call_collapse_effect(2, 3) $scene.call_collapse_effect(3, 4) このように連続で記入することも可能です。 ただし、SEとすり抜けの処理はないので、 適当なタイミングでSEを鳴らし、 コラプス前にすり抜けをオンにしてください。 =end #============================================================================== # ☆ MINTO #------------------------------------------------------------------------------ # 様々なフラグを扱うメインモジュールです。 #============================================================================== module MINTO # キャラクターコラプスを有効化 ( true で有効 / false で無効 ) RGSS["character_collapse"] = true end if MINTO::RGSS["character_collapse"] == true then #============================================================================== # ☆ MINTO_Sprite_Character_01 #------------------------------------------------------------------------------ # Sprite_Characterクラスの強化システムモジュールです。 #============================================================================== module MINTO_Sprite_Character_01 #-------------------------------------------------------------------------- # ● オブジェクト初期化 # viewport : ビューポート #-------------------------------------------------------------------------- def initialize(viewport) # 崩壊エフェクト用のデータを初期化 self.collapse_type = 0 self.collapse_duration = 0 self.last_data = [] # スーパークラスを実行 (継承先の処理に移行する) super(viewport) end #-------------------------------------------------------------------------- # ● 崩壊エフェクトの開始 # type : 崩壊エフェクトの演出タイプ(0〜4) #-------------------------------------------------------------------------- def collapse_start(type) # 元の表示形式を保存 self.last_data[0] = self.blend_type # 元の色を保存 self.last_data[1] = self.color.dup # 崩壊エフェクト演出タイプを設定 self.collapse_type = type # 崩壊エフェクト更新カウントを設定 self.collapse_duration = 48 # 表示形式を 加算 にする self.blend_type = 1 # 崩壊エフェクトの色を設定 self.color.set(255, 128, 128, 224) # 不透明度を 255(完全表示)にする self.opacity = 255 # キャラクター側の崩壊エフェクト開始フラグを オフ にする self.character.collapse = false end #-------------------------------------------------------------------------- # ● フレーム更新(崩壊エフェクト) #-------------------------------------------------------------------------- def update_collapse # 崩壊エフェクトの更新カウントが 1 以上の場合 if self.collapse_duration >= 1 then # 崩壊エフェクトの更新カウントを減らす self.collapse_duration -= 1 # キャラクターの不透明度を更新カウントに応じて下げる self.opacity = 256 - (48 - self.collapse_duration) * 6 # 崩壊エフェクトの更新カウントが 0 になった場合 if self.collapse_duration == 0 then # 縦横のズーム倍率を初期化 self.zoom_x = 1 self.zoom_y = 1 # 元の表示形式に戻す self.blend_type = self.last_data[0] # 元の色に戻す self.color = self.last_data[1].dup # 最終データをクリア self.last_data = [] end # 崩壊エフェクトの演出を更新 update_collapse_effect end end #-------------------------------------------------------------------------- # ● フレーム更新(崩壊エフェクト演出) #-------------------------------------------------------------------------- def update_collapse_effect # 崩壊エフェクト演出タイプに応じて分岐 case self.collapse_type # 処理なし when 0 then # 演出 1 when 1 then # ズーム補正(縦に伸ばす) self.zoom_x -= 0.05 self.zoom_y += 0.03 # 演出 2 when 2 then # ズーム補正(横に伸ばす) self.zoom_x += 0.05 # 演出 3 when 3 then # 崩壊エフェクト更新カウントが 24 以上の場合 if self.collapse_duration >= 24 then # ズーム補正(縮める) self.zoom_y -= 0.02 self.zoom_x += 0.01 # 横のズーム補正値が 0 以下にならないようにする self.zoom_y = [self.zoom_y, 0].max # 横のズーム補正値が 1.24 以上にならないようにする self.zoom_x = [self.zoom_x, 1.24].min # 崩壊エフェクト更新カウントが 24 未満の場合 else # ズーム補正(縦に伸ばす) self.zoom_x -= 0.115 self.zoom_y += 0.6 end # 演出 4(処理に負荷がかかります) when 4 then # ズーム補正(回転させる) self.zoom_x -= 0.03 self.zoom_y += 0.05 # 回転度を修正 self.angle += 7.5 end end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update # キャラクターが有効な場合 if self.character.is_a?(Game_Character) == true then # キャラクター側の崩壊エフェクト開始フラグが オン の場合 if self.character.collapse == true then # 崩壊エフェクトを開始 self.collapse_start(self.character.collapse_type) end # 崩壊エフェクトを更新 update_collapse end # スーパークラスを実行 (継承先の処理に移行する) super end end #============================================================================== # ■ Game_Character #------------------------------------------------------------------------------ #  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event # クラスのスーパークラスとして使用されます。 #============================================================================== class Game_Character #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :collapse # 崩壊エフェクト開始フラグ attr_accessor :collapse_type # 崩壊エフェクト演出タイプ #-------------------------------------------------------------------------- # ● 崩壊エフェクトの開始 # type : 崩壊エフェクトの演出タイプ(0〜4) #-------------------------------------------------------------------------- def collapse_start(type) # 崩壊エフェクト開始フラグを オン にする self.collapse = true # 崩壊エフェクト演出タイプを設定 self.collapse_type = type end end #============================================================================== # ■ Sprite_Character #------------------------------------------------------------------------------ #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを # 監視し、スプライトの状態を自動的に変化させます。 #============================================================================== class Sprite_Character < RPG::Sprite #-------------------------------------------------------------------------- # ● システムインクルード宣言 #-------------------------------------------------------------------------- include MINTO_Sprite_Character_01 # みんとスプライトキャラクター #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :last_data # 最終データの配列 attr_accessor :collapse_type # 崩壊エフェクト演出タイプ attr_accessor :collapse_duration # 崩壊エフェクト更新カウント end #============================================================================== # ■ Scene_Map #------------------------------------------------------------------------------ #  マップ画面の処理を行うクラスです。 #============================================================================== class Scene_Map #-------------------------------------------------------------------------- # ● 崩壊エフェクトの呼び出し # id : キャラクター(Sprite_Character)のID # type : 崩壊エフェクトの演出タイプ(0〜4) #-------------------------------------------------------------------------- def call_collapse_effect(id, type) # 指定されたイベントにアクセスする character = $game_system.map_interpreter.get_character(id) # 有効なキャラクターである場合 if character != nil then # 崩壊エフェクトの開始 character.collapse_start(type) end end end end