RPGツクールと数学のブログ

RPGツクールと数学についてのブログです。

アクションRPGの基礎(RPGツクールMV)(1/4)

過去ブログの転載です。

RPGツクールMVのアクションRPGサンプルです。全4回です。

(1/4) 剣を振る
(2/4) 敵を配置して攻撃する
(3/4) 敵にダメージを与える
(4/4) 敵からダメージを受ける・初期化

RPGツクールMVでフィールド上の敵を、技を使って倒すゲームの基礎を作る方法です。要するにゼルダみたいなアクションRPGの作り方を解説する記事です。

スクリプトはちょっと使うけど、プラグインの導入は原則必要ありません。

本記事は、アクションRPGをこういう風に作ることができるのか、という講座ですので、極力RPGツクールの標準機能で実装します。標準機能を使うので、カスタマイズしやすいと思います。スクリプトはどうしても必要な場面でのみ使いますが、細かく説明するつもりなので、スクリプトを一度も触ったことない方でも大丈夫です。

完成版のサンプル
action_rpg_sample.zip - Google ドライブ
右上のダウンロードボタンを押してダウンロードしてください。
ウェブ版

【プラグイン不要】アクションRPGサンプル - RPGアツマール

本記事の目標は基礎を作ることなので、最低限の機能として次の機能を作成します。

1. 剣を振る

2. 敵を攻撃して倒す

3. 敵はコピペで量産できるようにする

あとは工夫次第で何でも作れると思います。

ただし本講座の制約として、どこでもセーブは禁止です。敵が出現しないエリアでだけセーブできるようにするか、セーブポイントを設けることによって対策ください。*1

それでは早速作っていきましょう。

マップの準備

f:id:fermiumbay13:20190801121537p:plain

まずはマップを作りましょう。主人公の初期位置は何もないマップ「初期設定」にしておき、実際に主人公が動き回るマップ「マップ」を作成します。

f:id:fermiumbay13:20190801121634p:plain

マップ「初期設定」でいくつか初期設定を行ってから実際のマップへ移動させることにします。初期化は実際のゲーム作成時には、例えばオープニングの最中とかにさせるといいと思います。

f:id:fermiumbay13:20190801121727p:plain

このままだと初期設定マップに主人公が表示されてしまってみっともないので、
初期パーティを空にしておきましょう。F9でデータベースを開き、システムの初期パーティを全部消します。こうしておくと、ゲームが始まった瞬間に誰も表示されなくなります。

f:id:fermiumbay13:20190801121801p:plain

初期設定マップのどこかにイベントを設置します。トリガーは「自動実行」です。ゲームが始まったら暗転中にメンバーに主人公を加えて、さっき作った「マップ」に移動させるようにしましょう。フェードアウト/フェードインの間にはさまないと、一瞬主人公が表示されてしまいます。

f:id:fermiumbay13:20190801121832p:plain

テストプレイしてみると、何事もなくマップに主人公が現れましたね。今は初期設定の意味がないですが、これから色々追加していくことにします。

剣を振る

マップを歩けるようになったので、今度は剣を振れるようにしてみましょう。剣は上下左右の方向に振れるものにしたいので、アニメーションは4つ要ります。完成版のサンプルからコピペしてもらえばOKです。

f:id:fermiumbay13:20190801121905p:plain

とりあえず他のアニメーションもまとめてコピーしてきました。

剣は「決定」ボタンを押したら振るというものにします。キー入力の受け付けをコモンイベントで常時行っておき、決定ボタンが押されたら、その押された瞬間だけ「剣を振る」状態にするのです。

f:id:fermiumbay13:20190801121928p:plain

スイッチ1番「キー入力受付」を用意し、これを初期設定マップでONにしておきます。

f:id:fermiumbay13:20190801122000p:plain

「キー入力受付」がONになっているとコモンイベントが発生するようにします。トリガーは並列処理です。自動実行にすると、プレイヤーが止まってしまいます。

◆条件分岐:ボタン[決定]が押されている
 ◆条件分岐:決定キー押してる時間 = 0
  ◆スイッチの操作:#0002 剣を振る = ON
  ◆
 :分岐終了
 ◆変数の操作:#0001 決定キー押してる時間 += 1
 ◆
:それ以外のとき
 ◆変数の操作:#0001 決定キー押してる時間 = 0
 ◆
:分岐終了

条件分岐の「ボタンが押されている」は、イベント実行がそこを通った時点で、そのキーが押されているかどうかをチェックする機能です。

決定キーを押した瞬間だけ剣を振りたいので、変数1番「決定キー押してる時間」を用意し、押されていないときは常に0を代入、押され始めたら1ずつ足されていくようにします。

決定キーを押したときに、押してる時間が0のままだったなら、それが決定キーを押した瞬間ということになります。このときに剣を振ります。

剣を振るタイミングで、スイッチ2番「剣を振る」をONにします。

f:id:fermiumbay13:20190801122031p:plain

コモンイベント「剣を振る」を新たに作ります。トリガーは並列処理、出現条件はスイッチ2番「剣を振る」がONです。

◆条件分岐:プレイヤーが下を向いている
 ◆アニメーションの表示:プレイヤー,剣↓
 ◆
:分岐終了
◆条件分岐:プレイヤーが左を向いている
 ◆アニメーションの表示:プレイヤー,剣←
 ◆
:分岐終了
◆条件分岐:プレイヤーが右を向いている
 ◆アニメーションの表示:プレイヤー,剣→
 ◆
:分岐終了
◆条件分岐:プレイヤーが上を向いている
 ◆アニメーションの表示:プレイヤー,剣↑
 ◆
:分岐終了
◆ウェイト:15フレーム
◆スイッチの操作:#0002 剣を振る = OFF

プレイヤーの向きに応じて剣を振ります。アニメーションはウェイトなしにして、最後にウェイトを設けることにします。その後、剣を振るスイッチをOFFにして剣の処理を終えます。

f:id:fermiumbay13:20190801122052p:plain

これで剣が振れるようになりました。

まだ主人公が剣を振っているだけの状態ですが、次回は敵を設置して、敵を攻撃できるようにしていきます。

第2回

*1:そのうち出来るようにと思っているのですが、思ってるだけです……