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

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

アクションRPGの基礎(RPG2000)(4/7)

剣を振って当たったら敵の番号を取得するように作りましたので、今度は敵にダメージを与える処理を作ってみます。本記事(4/7)では前置きの説明のみです。説明などいらぬというかたは、(5/7)へ飛んでください。

手順はこんな調子です。

攻撃を当てた相手が「敵」であったら、それぞれの敵にダメージを与える
 ↓
攻撃が当たって「敵」すべてを吹っ飛ばす(移動させる)
 ↓
ダメージが既定値になったら(敵のHP分攻撃したら)、消滅していく
 ↓
最後にイベントを座標(000,000)に移動させ、事実上完全に消滅させる

今回はダメージを与える処理だけで、倒れたかどうかの判定以降はまだしないことにします。

ダメージを与えるだけならば、前回作った処理をちょっといじるだけでいいので
おそらくすぐに出来ることでしょう。

攻撃の当たった敵が無表情にダメージを受けるだけでは全く愛がありませんので、なんらかのエフェクトを施してそれっぽく見せる必要があります。それには様々な方法がありますので、色々考えてみるのも面白いかもしれません。ここで挙げるのは一例です。

ここでは、攻撃の当たった敵は、赤くフラッシュして1マスジャンプするように設定します。もちろんいくらでもアレンジ出来るので、ご参考程度に、色々やってみてください。

ただし、複数の敵が同時に倒れる処理において戦闘アニメでそれを表現することは推奨されません。戦闘アニメはRPGツクール2000や2003では、画面上に1つしか表示できないためです。これでは、複数の敵が同時に倒れているはずなのに1体の敵にしか戦闘アニメが表示されず、非常に違和感のある事態が発生します。戦闘アニメでこれを表現するのはとても難しいです。

フラッシュさせるだけであれば、容易に作成できますが、攻撃を受けたすべてのキャラクターを同時に移動させる場合はややこしくなります。同時に移動させるには、キャラクター個別の「移動タイプ」を利用する方法や、イベント命令「指定動作の全実行」を使う方法などがあります。ここでは指定動作の全実行を挟むことによって実現することにします。

f:id:fermiumbay13:20190801131748p:plain

実際この最後の全実行が本当に要るのかというのもありますけれど、個人的にお作法として最後には入れるべきと思います。

攻撃の当たった敵それぞれで「キャラクターの動作指定」を行います。これは、命令があった直後に実際にその動作をするものですが、動作しながらイベントは進行するので、同時に複数のキャラクターを動かせます。すべての敵の動作を決定したら、最後に「指定動作の全実行」を入れればすべての敵が動き終わるまで待つので、同時に動き出します。

イベント「技」ですべての進行を管理するようにするため、発見した対象者それぞれに「キャラクターの動作指定」を行わせたら、イベント「技」に処理を戻し、「指定動作の全実行」を入れるとします。

動作のあとさらに、ダメージによって倒した敵を消す処理を入れるので、誰が対象者になったのかを変数に控えておきます。この方法だと設定項目が少ない利点がありますが、当たり判定になりうるマスが非常に多いと(100マスぐらいあると)、その分変数が必要になるので、変数の上限があがる欠点があります。でもまあ、多くなったからといって作業量が増えることはないのですが……

また、敵のHPは変数に格納することになりますが、マップが変わる度に敵のHPをすべて設定して変数に入れるのは非常に面倒なので、HPではなく、逆に「ダメージ量」を格納します。たとえばHP3の敵だったら、ダメージ量ははじめ0で、3以上になるとやっつけられます。

イベントID 1番の敵のダメージ量は変数21番に、
イベントID 2番の敵のダメージ量は変数22番に、
イベントID n番の敵のダメージ量は変数20+n番に、それぞれ代入することにします。

ひとまず、変数21番~変数100番を敵のダメージ量格納領域としておきます。このとき、すべての変数にいちいち名前を付けるのは大変なだけなのでやめましょう。たとえば変数21番の名前を「ダメージ量(100まで)」とかにして、変数100番の名前を「ダメージ量(21から)」とかにすれば、おおむね分かると思います。

つづきは(5/7)です。