おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

【Unity】RPGでの敵とのランダムエンカウントプログラムを作ってみた!

f:id:bookreadkun:20190901111456p:plain

おはようございます。おーみんです。

 

 

ドラクエやFFなどのRPGでは定番中の定番である敵とのエンカウント!

今回はその実装方法について書いていこうと思います。

 

RPGのエンカウントは2種類ある

エンカウントのアルゴリズムは2種類あります。

 

ランダムエンカウント

→フィールドを歩いていたら一定確率で敵と遭遇(止まっているときは遭遇しない)

 

シンボルエンカウント

→敵があらかじめ見えており、戦いたい敵をある程度選べる

 

※今回僕が作ったのは「ランダムエンカウント」です。

 

エンカウントプログラム

必要なロジックは以下の2つ。

 

・キャラクターが止まっているときはエンカウントは発生しない

・一定確率でエンカウント発生

 

それらを考慮して書いたプログラムが以下になります。

 

f:id:bookreadkun:20190901112526p:plain

(※エンカウントに関する部分は24~29行目です。)

 

Rigidbodyを実装しているキャラクターの速度は25行目のように"rb.velocity.magnitude"で求めることが出来ます。

ランダムエンカウントは単純にRandom関数で特定の値が出力されるのを待つという感じですね~。

 

29行目で条件を指定してあげれば完成です。

 

Random.Rangeの範囲はステージによって適度に変えていく必要がありますが、とりあえずはこんな感じでw