読者です 読者をやめる 読者になる 読者になる

Unity / VRゲーム開発日記@長崎

Unityを使ったVRのゲーム開発をやってます。

ランダムな値(乱数)

Unityにはランダム生成専用のクラスが有ります。

■公式リファレンス:Random
http://docs-jp.unity3d.com/Documentation/ScriptReference/Random.html



使い方は単純で、

Random.Range(min, max)

とすると、min 〜 max-1
の範囲までの値が取得できます。



maxが-1になってるので、配列のサイズ内でランダム値を出したい場合は、

Random.Range(0, allay.Length)

みたいに、演算しないでそのままLength値が使えるという面では便利そうです。
また、minとmaxにはintまたはfloatが利用でき、
それぞれ与えた型で返却されます。



あとは、

Random.value

で 0.0 〜 1.0 範囲のfloatが返ってきます。
ただし、0.1、0.2、0.3
と少数第一位単位で刻むわけではなく、
0.287274
とか、範囲内でfloatが取りうる値で返してくるようです。
敵の回避率をランダムに設定とか、
パーセント的な値を設定する際には便利そうです。



また、ランダムにダンジョンのマップを生成するロジックがあったとして、
起動の度にダンジョンを変化させるのではなく、一時間おきにランダムパターンを
変更したいという際には、

Random.seed

の値が便利です。
この値を設定しておくと、毎回決まったランダムパターンを取得することが可能です。
なので、時間毎にランダムパターンを変化させたい場合は、seed値に
今2:46なら、2をseedに設定することで、2時台の間は同じランダムダンジョンを
楽しむことが可能となります。
ランダムの種を設定といったほうがわかりやすい人もいますかね。



リファレンスを見ると、他にも円や球体の範囲内で
ランダム値を取得するというゲームには活かしやすそうなプロパティもあるみたいですね。



この辺はまだ使ったことがないので、利用する機会があればまた
記事にしていきたいと思います。