スクリーンショット_2018-11-08_1

Scratchでポケモンぽいゲームを作る制作過程 #6

今回はPachiMon-6の内容を解説します。

PachiMon-6は自モンスター(mpm)が複数のスキルを使えるようにしました。PachiMon-5までは「Claw」というスキルだけでしたが新たに「Punch」を使えるように実装。以降、スキルを増やす時には同じように実装すればいいので、とりあえず一つだけ追加しました。また、敵モンスター(enm)もスキルを複数使ってくるようにしました。

PachiMon-5からの主な追加要素は以下の通りです。

・スキルのデータを管理するためのスプライト「skills」を作成
・モンスターのデータを管理するためのスプライト「monsters-setting」を作成
・コマンド選択画面で「Punch」を選べるようにする
・enmが複数のスキルを自動で使い分けてくるようにする

スキルやモンスターのデータは「MyPachiMon」などの既存のスプライトで管理してもよかったんですが、スクリプトがごちゃごちゃしてきたので分離することにしました。あまりスプライトが多いのも良くなさそうなので今後調整する必要があるかもしれません。

「Punch」を選択できるようにすること自体は「Claw」を実装した時と同じように作ればいいので簡単です。enmが複数のスキルを自動で使い分けるようにするのは少し工夫が必要でした。


スキルのデータを管理するためのスプライト「skills」を作成

skillsにはスキルの威力を表す変数skill-power-〇〇をセットしました。現時点では3つのスキルだけなのでスクリプトはこれだけです。

ダメージ計算の時にこれらの変数を呼び出して使います。


モンスターのデータを管理するためのスプライト「monsters-setting」を作成

とりあえずDragonのパラメータだけセットしました。左側の「フラッグがクリックされたとき」以下のやつは一応初期化してみただけです。特に意味はないのであとで削除するかも。

これらの変数をバトル画面でのパラメータの表示やダメージ計算に使います。


コマンド選択画面で「Punch」を選べるようにする

「Punch」はスプライト「Fight-command-1」で作成しました(上記画像)。

クリックされた時に「using-mpm-skill-powerをskill-power-punchにする」などして、ダメージ計算に使えるようにしてあります。また、using-mpm-skill-typeという変数も用意しておいて、使うスキルをnormalかspに分けてダメージ計算に使うパラメータを変えています(下記画像参照)。

これはスプライト「Enemy-Monster」のスクリプトです。normalスキルの場合はattackとdefence、spスキルの場合はsp-atkとsp-defで計算するようにしてあります。

これによって、normal攻撃に強いモンスターやsp攻撃に弱いモンスターなどを表現することができます。

using-〇〇という変数を使っている理由ですが、上記のようにダメージ計算で使う変数は常に同じにしたかったので、あえて変数を一つ増やしてそこに代入するようにしました。これによって、「damage-caluculation」の部分は大きな変更をせずにどんな攻撃のダメージ計算もできるようになるはずです。

ダメージ計算の式は以前よりも少しだけアップグレードしてありますが、これでもまだ不十分なので今後改良するつもりです。


enmが複数のスキルを自動で使い分けてくるようにする

*スプライト「Enemy-Monster」のスクリプト

mpmと違ってenmは自動的にスキルを使ってくるようにしたいので、乱数を使ってランダムに振り分けました。0~9までの乱数を10で割った余りは0~9の10通りです。余りが0~2のときはenm-skill-1を使い、余りが3~9のときはenm-skill-2を使うようにしてあります。つまり30%の確率でスキル1、70%の確率でスキル2を使ってくるということです。

乱数を使えばスキルの使用割合を自由に設定できるし、使うスキルが増えても拡張できます。

実際にPachiMon-6で遊んでみるとenmが「Claw」と「Fire-Breath」を使い分けてくるのがわかると思います。


ここまでくるとスプライトもスクリプトもかなりの数になっています。気づかないバグもあったので次回はそのバグの修正を中心にやります。

初めましてヒロです。勉強プロデューサー/コーチ:Lv50。無人島:Lv2。サバイバル:Lv2。YouTuber:Lv1。ブログ:Lv3。Twitter:Lv5。Note:Lv2。Lvは全て自称です。