見出し画像

【ゲーム個人開発】ソロでゲームを作るよ#4GDevelopで敵キャラをランダムで移動させよう(ついでに攻撃も)

koishiでーす。ハロー。

今日も浅はかで浅ましく薄っぺらい人間性を前面に押し出しながらデべちゃんをセコくやりくりしております。

そんな私のセコ技のひとつに敵キャラをランダムで移動させるというものがありまして、今回はこちらをご紹介したいと思いまーす!


例えばこんな感じで敵を配置したとしましょう。
ああ、そういえば遅れましたが私は現在トップダウンビューのRPGを製作中でございます。

ぶっちゃけツクールで作れる内容というか以前にツクールで作ってアプリ化できずにリリースそのものをお蔵入りしたものの焼き直しでございます。

現在にいたってはアプリ化してもテスターが二十人も必要という絶望で、ああ、もう、詳しくは#3を読んでくだしぃ。

ちょっと作るゲームの方向性を見失いそうになっておりますが、まぁとりあえず作るかということで作っております。よしなに。

そんなわけで上の画像みたいに敵を配置したとして、もっともポピュラーな敵の行動は「プレイヤーに接近する」だと思います。そしてコリジョン(衝突)するとダメージみたいな感じ。

なんか違くね?

私はそう思いました。

トップダウンビューで敵が体当たりばかりしてくる。なんかめっちゃ群がってくる。全滅させたらあとは次のマップを目指してフィールドを歩くだけ……。

やっぱなんか違うよね?

敵には予想できない動きをして欲しい時もある。そんな気持ち、わかると思います。

というわけで今回も練習シーンを作成してWarrior君に実験台になってもらいましょう。


虚無の世界に佇むWarrior君

で、試行錯誤の末にたどり着いた「敵キャラをランダム移動させるイベント」がこちらぁ!


見づらい方は拡大してください。

こちらのイベントは「シーンタイマー」と「変数」を組み合わせています。
このシーンタイマーというのが厄介で「条件」でシーンタイマーを使うには「アクション」でシーンタイマーをスタートさせる必要があります。

つまり、
1、アクションでシーンタイマーをスタート
2、条件でシーンタイマースタートから何秒経過したか(または何秒以下か)を計測
3、シーンタイマーを条件にしたアクションが発動
4、シーンタイマーをリセットするアクションを設定して再び計測開始
となります

なので条件の「シーンタイマー」をアクションの「シーンタイマーをスタート(またはリセット)」で挟む必要があるわけですね。今回は変数0をリピートしているので疑似的に挟む形を作っています。

シーンタイマーの使い方がわかればあとは簡単。
変数にRandom InRange()をセットして()の中に上下左右の変数、つまりRandom InRange(1,4)を作ればいいわけです。(変数0はRandom InRangeの起動とシーンタイマーのスタートに使うためRandom InRange(0,3)はNG)

これでRandom InRangeがランダムに変数を選び、その変数の上下左右の押下がシミュレートされます。「上下左右の押下をシミュレートする」アクションはトップダウンビヘイビアかキャラクタープラットフォームビヘイビアを追加しましょう。

また一番下のシーンタイマーの時間がボタンを押下する時間になるので、ここを長くすると一回あたりの移動距離が伸びます!

イベントの流れとしては、
1、変数0の時→「シーンタイマーをスタート」「変数をランダムに選ぶ」
2、変数X→上下左右のいずれかが押される(シミュレートされる)
3、シーンタイマーが1秒経過→変数を0にリセットする
4、変数0の時→「シーンタイマーをスタート」「変数をランダムに選ぶ」
5、以下ループ

注意点としては敵キャラのビヘイビアでデフォルトコントロールをオフにしておくことでしょうか。そうすれば自キャラを操作するために矢印キーを押したときに敵キャラまで連動することを防げます。


さらにこのイベントを下記のように改造すると、


ランダムで移動しつつ、たまに弾を発射します!


弾の代わりの下矢印(笑)

この場合、Random InRange(1,4)をRandom InRange(1,8)に変更して、弾を発射する移動パターンと発射しない移動パターンを作る必要があります。

このWarrior君に使ったイベントを実際のゲームイベントに使うことで、見事敵キャラが移動しつつたまーに攻撃する挙動が完成しました。


ランダムに移動したり攻撃したりしなかったり

三体を別々に行動させるには、変数の種類を変えればいいです。例えばハーピー1の変数はRandom_Move1、ハーピー2はRandom_Move2、ハーピー3はRandom_Move3といった感じです。

ツクールならランダムに移動させるのはわりと簡単ですが、そこは自由度の代償だと思いましょう。

なにはともあれこれで敵キャラをランダムに移動させることができました。

次はセーブデータの作り方とかかなぁ。でもその辺は公式サイトにも載ってるしなぁ。

ちなみにけっこう憂いていた自キャラと敵キャラのダメージの方法はビヘイビアを使えばわりと簡単にできました。
そこを詳しく説明してもいい気がするけどユーチューブで外人さんが投稿している動画を(タワーディフェンスのやつ)を日本語字幕で観ればだいたいできそうな気がしなくもない。

タッチ操作用のイベントも作ったんですが需要ありますかね? 画面上に矢印を表示してそこにカーソルを合わせる(スマホだとタップする)と自キャラが移動するイベントです。

なにか、こういう時どうしたらいいのかな? ってことがあったらぜひぜひ教えてくださいませ。


それでは、よしなに。



この記事が気に入ったらサポートをしてみませんか?