RPGツクールMZの公式プラグイン「ARPGプラグインセット」で遊んでいます。
今回は真・壺投げとして完成させます。理解が深まったのでちゃんと形にできましたが、記事をシンプルにするのは難しかったです。
ちなみに失敗版の壺投げはこちら。
目次
●壺(FO):初期化~FOとヒットボックスを設定し初期化完了
まずはマップに配置する壺から。(FO)とあるように、フィールド オブジェクトです。フィールドオブジェクトとして初期化し、衝突範囲を設定して初期化を終了します。
テンプレートで選択されているタイルセット変更は壺画像がないため行っています。ただ、画像にタイルセットを使う場合、最終的には配置先のマップのタイルマップが使われるのでご注意ください。画像が確定したらimg/charactersに配置し、そこから使うべきかと思います。
- テンプレート_その他のタイルセットを「外観」に変更
- テンプレート_その他に新しくイベント「壺(FO)」を作成
- 出現条件のスイッチを「0002 ARPGモード」に変更
- 画像を「壺」に変更
- トリガーを「自動実行」に変更
- 実行内容にプラグインコマンド「build/ARPG_Core, フィールドオブジェクト設定」を追加
- 実行内容にプラグインコマンド「build/ARPG_Core, ヒットボックス設定」を追加
- ヒットボックスタイプを「カスタム」に変更
- カスタムヒットボックスタグを「pack」に変更
- ヒットボックスリストに項目を1つ追加
- X座標:0.25
- Y座標:0.25
- 横幅:0.5
- 縦幅:0.5
- スイッチの操作を追加:0021 $初期化完了 = ON

●壺(FO):当たり判定~当たり判定を並列処理で実行
壺(FO)の初期化が完了したら並列処理で当たり判定を実行します。自分を荷物=packとし、相手をアクション=actionとして当たり判定の対象を設定。結果を拡張セルフスイッチの「ヒット検出」に格納します。ヒット検出された時に削除された表現をするためイベント3を追加。出現条件をヒット検出とします。
並列処理にすることで動き回る敵やプレイヤーと同時に当たり判定を実行できます。自動実行も勝手に起動しますが、イベントやプレイヤーの操作を止めてしまうので使えません。何度も繰り返したり、同時に実行したりする場合はトリガーを並列処理にします。
- EVページ作成でイベント2を追加
- 出現条件のスイッチを「0021 $初期化完了」に設定
- 画像を「壺」に変更
- トリガーを「並列処理」に変更
- 実行内容にプラグインコマンド「build/ARPG_Core, 当たり判定チェック」を追加
- 主体ヒットボックスタイプを「カスタム」に変更
- 主体カスタムヒットボックスタグを「pack」に変更
- 対象ヒットボックスタイプを「カスタム」に変更
- 対象カスタムヒットボックスタグを「action」に変更
- 結果格納スイッチIDを「0028 $ヒット検出」に変更
- EVページ作成でイベント3を追加
- 出現条件のスイッチを「0028 $ヒット検出」に設定


●武器とスキルとコモンイベント~メモ記述経由でスキルオブジェクト生成
武器を振った時にフィールドに影響を及ぼすための一連の流れを作成します。武器振りでスキルを、スキルからコモンイベントを、コモンイベントからスキルオブジェクトを作成します。持ち上げる壺と衝突できるようにスキルオブジェクトを利用します。
スイッチの状況に応じて持ち上げるか投げるかが変わります。投げる時はスキルオブジェクトを生成しないのにスキル発動を呼び出しています。これはブザーが鳴ってしまうための処置です。スキル発動しないとキャンセルかコストが足りない、という扱いとなるのかもです。
- 武器にあるショートソードのメモに「<skill: アクション>」を入力
- スキルにある岩投げを「アクション」として複製
- メモを削除し「<action: アクション>」を入力
- コモンイベントに「アクション」を追加
- 実行内容にプラグインコマンド「build/ARPG_Core, スキル発動」を追加
- 実行内容に「条件分岐」を追加
- スイッチ「荷物持ち」を追加
- 条件分岐の条件を「スイッチ:荷物持ちがONの時」に設定
- 「条件を満たさないときの分岐を作成」をチェック
- 条件を満たした時のイベントを編集
- スイッチの操作を追加:荷物持ち = OFF
- スイッチ「荷物投げ」を追加
- スイッチの操作を追加:荷物投げ = ON
- 条件を満たさない時のイベントを編集
- プラグインコマンド「build/ARPG_Core, スキルオブジェクト生成」を追加
- 生成元マップIDを「15」に変更
- 生成元イベントID or イベント名を「アクション」に変更
- 位置指定>位置指定を「前方座標」に変更
- 生成動的イベントID格納変数を「0001 %生成動的イベントID」に変更



●アクション:衝突判定~カスタムヒットボックスによる判定
持ち歩きから投げのイベントを保持するスキルオブジェクトの初期化です。衝突範囲を設定し、衝突チェックを行うまでのイベント2つを設定します。
ヒットボックスで衝突範囲を設定し、並列処理にしたイベントで当たり判定チェックを繰り返します。壺に設定したタグ「pack」と衝突するとスイッチ「荷物持ち」がONになり、荷物持ち状態となるという寸法です。pack以外と衝突した場合のイベントも追加できるようにし、少し汎用的にしてます。何も例は浮かんでいませんが。
- テンプレート_その他にイベント「アクション」を作成
- トリガーを「自動実行」に変更
- 実行内容にプラグインコマンド「build/ARPG_Core, ヒットボックス設定」を追加
- ヒットボックスタイプを「カスタム」に変更
- カスタムヒットボックスタグを「action」に変更
- ヒットボックスリストに項目を1つ追加
- X座標:0.25
- Y座標:0.25
- 横幅:0.5
- 縦幅:0.5
- スイッチの操作を追加:0021 $初期化完了 = ON
- EVページを追加し、イベント2の編集を開始
- 出現条件としてスイッチ「0021 $初期化完了」を設定
- トリガーを「並列処理」に変更
- プラグインコマンド「build/ARPG_Core, 当たり判定チェック」を追加
- 主体ヒットボックスタイプを「カスタム」に変更
- 主体カスタムヒットボックスタグを「action」に変更
- 対象ヒットボックスタイプを「カスタム」に変更
- 対象カスタムヒットボックスタグを「pack」に変更
- 結果格納スイッチIDを「荷物持ち」に変更


●アクション:荷物持ち~頭上位置への移動と使用者位置同期
荷物持ち状態になった時の初期化と、荷物持ち中のイベントを作成します。初期化では持ち上げた時のSEを再生して衝突範囲を無効にし、頭上に移動させてプレイヤーと位置同期させています。持ち上げ中はプレイヤーより手前に表示するだけで何もしていません。
キャラクター小数座標取得は基本同じなので、別のコモンイベントにあるものを複製しても大丈夫です。慣れるためにもプラグインコマンドから設定するのをお勧めしますが。キャラクター指定は結構色んなプラグインコマンドで出てくるので特に慣れたい項目です。
- EVページを追加し、イベント3の編集を開始
- 出現条件としてスイッチ「荷物持ち」を設定
- 画像を「壺」に変更
- トリガーを「並列処理」に変更
- SEの演奏で「Jump1:ピッチ70%」を追加
- プラグインコマンド「build/ARPG_Core, ヒットボックス有効/無効切り替え」を追加
- ヒットボックスタイプを「カスタム」に変更
- カスタムヒットボックスタグを「action」に変更
- 有効化を「OFF」に変更
- プラグインコマンド「build/ARPG_Core, キャラクター小数座標取得」を追加
- キャラクター指定>キャラクター種別を「プレイヤー」に変更
- 小数X座標格納変数IDを「0024 %#汎用X座標」に変更
- 小数Y座標格納変数IDを「0025 %#汎用Y座標」に変更
- 変数の操作を追加:%#汎用Y座標を1減算
- イベントの位置設定を追加し「変数で指定」に変更
- Xを「0024 %#汎用X座標」に設定
- Yを「0025 %#汎用Y座標」に設定
- プラグインコマンド「build/ARPG_Core, スキルオブジェクト使用者位置同期」を追加
- セルフスイッチの操作を追加:C = ON
- EVページを追加し、イベント4の編集を開始
- 出現条件としてスイッチ「荷物持ち」を設定
- 出現条件としてセルフスイッチ「C」を設定
- オプションの「すり抜け」をチェック
- 画像を「壺」に変更


●アクション:荷物投げ~岩(SO)と岩投げを有効活用
持ち歩きまでにしようかとも思いましたが、結局岩投げを複製するだけなので記事化しました。スキルオブジェクト「岩(SO)」のイベントと、コモンイベント「岩投げ」にある着地点作成を活用することで30以上あった手順を減らしました。ここまできたらサクッと完成させましょう。
実際の投げは「smartJumpAbs」を使って処理しています。ドット単位移動のプラグイン「DotMoveSystem_FunctionEx」にある機能のようです。なぜここだけスクリプト記述なんでしょうか。現在地から指定位置までジャンプするプラグインコマンドとして用意してくれても良い気がします。
- テンプレート_スキルにある岩(SO)のイベント1をEVページコピー
- アクションのイベント4を選択し、EVページ貼り付け
- 出現条件としてスイッチ「荷物投げ」を設定
- 画像を「壺」に変更
- トリガーを「並列処理」に変更
- SE演奏の次から実行内容への追加を開始
- コモンイベント「岩投げ」にある「キャラクター小数座標取得」を複製
- 変数の操作を追加:%#汎用Y座標を1加算
- コモンイベント「岩投げ」にある「条件分岐:プレイヤーが※を向いている」を4つ複製
- 複製した条件分岐内の各値を「3」に変更
- コモンイベント「岩投げ」にある「セルフ変数値設定」2つを複製
- セルフ変数値設定のイベントID、イベントID(変数指定)を「0」に変更
- スイッチの操作を追加:荷物投げ = OFF
- テンプレート_スキルにある岩(SO)のイベント2をEVページコピー
- アクションのイベント5を選択し、EVページ貼り付け
- 画像を「壺」に変更
- テンプレート_スキルにある岩(SO)のイベント3をEVページコピー
- アクションのイベント6を選択し、EVページ貼り付け




●マップ配置して確認
サンプルマップ1の入り口近くにイベントを作成し、メモに<cp: 壺(FO)>を入力します。長かった壺投げ、「真・壺投げ」として完成です!
壺の前でOKボタンを押すと持ち上げ、もう一度OKを押すと投げます。壺をたくさん配置して試してみてください。アクションスキルにダメージの設定があるので、敵にぶつければちゃんとダメージが通ります。
思ったより厳しい制約に阻まれて中々記事化できませんでした。しかし、そのおかげでARPGプラグインセットを使いこなせるようになったのではないかと思います。
そろそろARPGとして何か作っていきますか。
コメント
私もARPGセット使ってRPG制作しているのですが、
オリジナリティ入れようとするとプログラムが複雑でなかなか難しく、
他に文献もないのでこちらのサイト様の記事とても参考になっています。
これからも応援しています!
ありがたいお言葉、痛み入ります。
大分理解できてきた気もしますが、プログラムの量も多いのでまだまだ時間がかかりそうです。
お互い頑張っていきましょう~!