おーみんだよ。

おーみんだよ。

プログラミング(主にUnity)や気になるニュースについて。

【Unity22話】フィールドを歩いてたら敵が出るRPGの設定。

   f:id:bookreadkun:20190102094735p:plain

おはようございます。おーみん(@Ooooooomin_365)です。

 

現在UnityでRPGゲームを作成中です。

今回の記事では、フィールド上を歩いていたらいきなり敵に遭遇し、戦闘シーンへ移り変わる様子(ポケモンやFF、ドラクエみたいなイメージ)をまとめていこうと思います。

 

イメージを掴んでもらうために、完成した様子をあらかじめ載せておきます。ツイート内容は気にしないでください(笑)

 

 

侍がフィールドを歩いていたらいきなり敵にエンカウントしている様子が分かると思います。

 

それでは、どのようにしたらこのような設定が出来るのか解説していきましょう。

 

 

フィールドを歩いていたら敵が出る設定

やり方は簡単です。流れは以下のような感じ。

 

  1. Cubeオブジェクトを作成 &Rigidbodyを付ける
  2. Cubeオブジェクトをマテリアルで透明化 & プレハブ化
  3. Cubeがランダムで出現 & 一定時間経つと消滅のスクリプトを書く
  4. Cubeに衝突後、戦闘シーンに移るようスクリプトを書く

 

Cubeオブジェクトを作成 & Rigidbodyを付ける

 

ヒエラルキービューからcreate→3DObject→cubeを選択。

cubeを選択し、インスペクタービューの"Add Component"からRigidbodyを追加。

Rigidbodyのposition、rotationのx,y,zは全てチェックを入れる。

 

Cubeオブジェクトをマテリアルで透明化 & プレハブ化

 

Projectビューより、新しくマテリアルを追加→透明にする。

 

 

Cubeがランダムで出現 & 一定時間経つと消滅のスクリプトを書く

 

f:id:bookreadkun:20190102092428p:plain

 

Update関数によって1秒後(float spanで1秒と定義)プレハブ化した物体が出現、最後のDestroy(mon, timer)にて、その物体は一定時間後に消滅といった流れです。

 

スクリプトを新たに作ったGameObject(名前をCubeObjectとでもしましょう)に追加し、インスペクタービューにてプレハブ化した物体をドラッグ&ドロップで追加。timer(消滅する時間)も設定してください。

 

Cubeに衝突後、戦闘シーンに移るようスクリプトを書く

 

f:id:bookreadkun:20190102093212p:plain

 

以前タイトルシーンからゲーム開始シーンへのシーン遷移についての記事でも書きましたが、シーン遷移は "using UnityEngine.SceneManagement;" と "Scene Manager.LoadScene("遷移先のシーン名");" のみ覚えていれば楽勝です。

 

今回はPlayerタグの付いたもの(侍)と衝突したら戦闘シーンへ遷移するというスクリプト。

要は侍がCubeを検知するのではなく、Cubeが侍を検知するという仕組みになっています。

 

これをCubeObjectにドラッグ&ドロップ。

 

最後に

 

以上をもって、最初に載せた動画のような感じで戦闘シーンへ移ることでしょう。

 

 

ただ、もちろん今は作ったばかりなので今後はCubeの出現頻度と消滅頻度を良い具合に調整していく必要があります。

今のままだとちょっと敵と出会いにくそうなのでもう少しCubeの出現頻度を増やしたいですね~。

 

それから戦闘シーンへの移行に関しても、瞬間的にパッと移るのではなく、もう少しかっこよくシーン移行させたいです。

 

これがとりあえず今後の課題かな。

 

また進んだらアップしてみようと思います。

では!

 

※他にもUnityに関する記事を書いているのでぜひ!

【会話シーン】

【Unity二十話】Fungusを用いてRPGの会話シーンを作る。 - おーみんだよ。

 

【Terrainの木をすり抜けなくする方法】

【Unity十八話】Terrainの木をすり抜ける際の解決法。 - おーみんだよ。

 

【ColliderとTriggerの理解】

【Unity第十一話】ColliderとTriggerの理解。 - おーみんだよ。