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

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

斜め方向のキー入力判定を作ってみる【RPGツクールMZ】

こんにちは。

 

RPGツクールMZでフリーゲームを制作中(?)。制作中って言っていいような制作スピードではありませんが(-_-;)

 

銃を武器にするARPGを考えているということは前にお話ししましたが、敵を狙う方法(操作)をどうするか、ということをその後考えてました。

 

その方法の1つとして”プレイヤーが向いている方向にいる敵を自動で狙う”というシステムを試してみようと思ってます。

 

もうちょっと詳しく言うと、「プレイヤーの向きで自動照準できる範囲が変わり、その範囲内に敵がいた場合、最も距離が近い敵の方向に攻撃を放つ」というものですがこの「プレイヤーの向きで範囲が変わる」ってところの基礎となる部分を今回作ります。

 

※記事は初心者による試行の結果です。内容が唯一の正解とも限りませんし最適解とも限りません。正解でない可能性すらありますので予めご了承ください。

 

まず初めに思いつくのがプレイヤーの向きで条件分岐させる方法ですね。RPGツクールMZではイベントコマンドの条件分岐でプレイヤーの向きによる分岐を作成することができます。

f:id:icedtomatobazooka:20220201175035j:plain

f:id:icedtomatobazooka:20220201175059j:plain

これを並列処理のイベントに上下左右4つの分岐を作ったら常にプレイヤーの向きを判定するイベントができるわけですが…。

 

4方向だけだと範囲広すぎで大概敵が射程内に収まってしまって面白くない。かと言って範囲を狭めて死角(その位置から攻撃できない角度)をつくると範囲に収めるための移動が必要になり操作がちょっと煩わしい。まぁそういうゲームだってことにしたらそれでいいのだろうけどw

 

ここは8方向操作できるようにしたいところです。

 

RPGツクールMZはプレイヤーの向きが4方向のみですのでこれによる条件分岐は使えません。いろいろ工夫したらできなくもないかも知れませんが別の手段をつかいます。

 

方向キーの入力判定を用いるのが最も王道的でうまく行きそうな予感。2作目ゲームがコマンド入力をするゲームだったのでキー入力判定はちょっと得意分野なつもりです。

 

条件分岐に”ボタン”の”押されている”っていうのがあるのでそれを使って上下左右の4つの分岐を作ります。

f:id:icedtomatobazooka:20220201203819j:plain

f:id:icedtomatobazooka:20220201204348j:plain

このままだとまた4方向だけですがそれぞれの分岐をさらに2つに分岐させると斜め方向も判定できることになります。

f:id:icedtomatobazooka:20220201204904j:plain

実はこれだと12通りの分岐になっていまして、例えば「上を押していると同時に左を押している」と「左を押していると同時に上を押している」は被っているためどちらかは消しても良いかも知れません。被っている条件は同じ処理にするのでとりあえずこのままやってみます(別の処理にしてしまうのはたぶんNG)。

 

それぞれの分岐の中に対応する処理を丸ごと入れてしまうと見た目が複雑になって後から読み返しにくくなるのでまずは変数を割り当てて後で変数毎に分岐してメインの処理を行うようにします。

 

変数の割り当て方はもちろん自由ですが何番がどの方向キーか覚えておくためにテンキーの割り当て方にしました。

 7  8  9
 4  5  6
 1  2  3

これ。5がニュートラルで左なら4、上なら8、右下なら3。

変数を作ってそれぞれ割り当てます。

f:id:icedtomatobazooka:20220201211939j:plain

判定部分はこれを並列処理にしたら一応完成。今回イベントコマンドで作ったので条件分岐の中に条件分岐、となりましたがスクリプトを使って斜め方向を1つの分岐に纏めることもできます。

 

Input.isPressed('up') && Input.isPressed('left')

 

このスクリプトを分岐条件にすると"上と左が押されているとき”になります。up、leftのところをdown や right にしたら8方向できますね。

 

方向キー以外にもいろいろできますがここでは割愛。参考にしたサイトのリンクを貼っておきます↓ (ツクールMVについての記事ですがMZも同じです)。

 

上で”一応” 完成と言ったのは訳がありまして、このままだと斜め判定はかなり厳しいものになります。例えば左上を入力したとき、キーを押している間は良いですが上キーと左キーをぴったり同時に放さなければ最後は左上の判定にならないのです。少しでも上を長く押していれば最後は上キーが押された判定になります。当たり前と思うかも知れませんがこれだと斜め方向で止めるのがすごく難しくなるのです。

 

解決するためには最後にウエイトを入れます。自分が操作した感覚では5~8フレームくらいがいいかなと思いました。あまり長いと判定が遅くなります。

 

判定後の処理をピクチャ表示にして入力した方向が明るくなるようにしてみました。

f:id:icedtomatobazooka:20220201215304g:plain

思った方向で止められるし反応もストレスないので入力判定としてはOK。 明るくなる部分がもっとぬるぬる動くようにできたらいいですけどそれはまた別のハナシになるので今回はここまでですm(´・c_・` )m

 

 

らくがき

f:id:icedtomatobazooka:20220201215948j:plain

ゲームで使えるような立ち絵のラフを描こうとペンを取ったのにどうしてこうなった…。進まん(-_-;)

 

 

 

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

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