アイストマトバズーカのゲーム制作日記

いろいろ超初心者がゲーム制作に挑戦。現在RPGツクールMZでフリーゲーム制作中。フリー素材も作って置いてます。

ゲーム制作の基本!?「当たり判定」について考えてみる(´ε`;)【RPGツクールMZ】

こんにちは。

RPGツクールMZでフリーゲームを制作中ですが、ちょっと難しそうなことがあるとすぐにプラグインを探し始めてしまう初心者丸出しのITBです。

 

制作中のゲームに”当たり判定”を取り入れたいと思ってプラグインを探してましたw

当たり判定とは例えば2枚の絵が動いていて、その絵が重なったとき、「当たった」とゲームに判定させるというものです。判定したときに効果音やアニメーションを実行することでぶつかっている表現をしたりします。

シューティングやアクション、格闘など様々なジャンルのゲーム制作に必須のシステムですがオーソドックスなRPGには不要であるため、RPGツクールの基本機能には備わっておりません。

 

これをRPGツクールMZでどうやろうか。となってまずプラグインを探したのですが、私は見つけられませんでした(結構すぐ諦めるので存在はするかも知れませんw)。

RPGツクールMV用であればすごいのがいろいろあるんですけどね。

「RPGツクール シューティング プラグイン」とかで検索すると出てきます。

RPGツクールMZのプラグインも最近は増えてきましたがこういうのはまだないのかな?

 

今制作中のゲームではそれほど複雑なシステムは必要としないのでプラグイン無しでなんとかやってみようと思います。

 

ではどうやって? ということになるのですがたぶん基本的な考え方はこうです↓

 

「ピクチャの座標を取得して座標が重なったら”当たった”と判定」

 

 ピクチャを動かすということをこの前の記事で書きました。

icedtomatobazooka.site

私の場合、このときの座標を変数にしておき、この変数を少しずつ変えることでピクチャを動かし、その変数をそのまま使った条件分岐で当たり判定を実現しましたが、シンプルにスクリプトで座標を取得することもできます。

(スクリプトについても↑の記事ご参照。)

 

$gameScreen.picture(n).x() n番目のピクチャのx座標を取得

$gameScreen.picture(n).y() n番目のピクチャのy座標を取得

 

判定させるためのイベントをピクチャ移動とは別で作成し、常に条件判定を行うようにトリガーを並列処理にしておきます。

 

並列処理の記事↓

icedtomatobazooka.site

 

具体的な条件を例で書きます。

例えば"A”と"B”のピクチャがあって、これに当たり判定を持たせる場合。

RPGツクールMZのデフォルト設定では座標は左上を原点としますので、

Aの座標を(x1,y1)、大きさをa1×b1pixel、Bの座標を(x2,y2)、大きさをa2×b2pixelとしたとき、

f:id:icedtomatobazooka:20210223115055j:plain

x1 ≧ x2 - a1 

x1 ≦ x2 + a2

y1 ≧ y2 - b1

y1 ≦ y2 + b2

上記をすべて満たしたときに”当たった”とします。条件分岐にすべての条件を入れて当たった後のイベント処理を分岐の中に入れたらOK。

 

制作中ゲームの場合は移動するピクチャはX軸方向のみなのでさらに簡単です(x1の2条件だけ)。

まだ途中ですが今のところこれでうまくいっており、次回作の制作開始時に"できるかどうか全く不明"だったのが、現段階では"たぶんできると思う"に認識が変わりました。

 

いつか完成すると思います。いつかね(´ε`;)

 

 

 

今日のらくがき

f:id:icedtomatobazooka:20210223115244j:plain

拳銃娘ラフ

全く絵柄が安定する気配がありません(;´Д`)

 

 

 

ランキング参加中です。下のバナーをクリックして頂けるとやる気値が増幅します!!

f:id:icedtomatobazooka:20201229184218j:plainにほんブログ村 ゲームブログ ゲーム制作へ