Unityでランダムな数値を生成したいんだけど!?
どうも、Linです。250g、挑戦です。
Unityでゲームアプリを作成しているとたまに、
ランダムな数値を生成したい
という瞬間があることでしょう。
そんなときは、
RandomクラスのRangeメソッド
を使うと便利です。
使い方としては、
Random.Range(最小値, 最大値)
という感じですね。

引数に設定した最小値と最大値の間にある数値をランダムで返り値として返します。

注意点としては、最小値と最大値の値はfloat型でなくてはならない点です。
数値の後ろには必ずfをつけるようにしましょう。
たとえば、
Random.Range(-10.0f, 10.0f);
としてやれば、-10から10までのランダムな数値を返してくれるわけです。

試しに、空のオブジェクト「GameObject」を作成して「Test.cs」というスクリプトをアタッチしてみます。

-10から10までのランダムな数値をコンソールに表示するアプリを作ってみましょう。
下記のスクリプトを「Test.cs」に書いてやると、
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { print (Random.Range (-10.0f, 10.0f)); } }

こんな感じでフレームごとに-10から10までのランダムな数値を吐き出してくれるようになります。
もっと詳しいRandomクラスの使い方はUnityの公式レファレンスをご覧くださいね。
Unityのランダムを生成するとこんなゲームが作れる
最後に、ぼくがRandom.Rangeをどのように役立てたのかを書いておきましょう。
GameObjectのtransformの位置情報のx・yの値にランダムの数値をあてがうことで、
トマトがブルブル振動するゲーム
を作ってみました。
作り方は簡単で、トマトの画像をヒエラルキーにぶち込んで、
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Test : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { this.gameObject.transform.Translate (Random.Range (-1.0f, 1.0f), Random.Range (-1.0f, 1.0f), 0); } }
というスクリプトをトマト画像にアタッチするだけです。
this.gameObejctで、スクリプトがアタッチされているゲームオブジェクト(トマトの画像)を取得。
そのtransformコンポーネントの位置情報をTranslateメソッドで変更しているわけです。
Translateメソッドの第一引数はx座標、第二引数はy座標なのでRandomクラスで取得し、z座標に関しては2Dゲームなので0を設定。
これでトマトが振動するゲームが作れるというわけですね。
Unityでランダム数値を生成したいという方はよかったら試してみてください。
「もっと詳しくUnityの使い方を勉強したい!」
という方にはTECHACADEMYのオンラインブートキャンプ Unityコースがおすすめです。
プロのメンターの方にオンラインで疑問点を質問できますからね。よかったら無料体験から試してみてください。
それでは!
Lin

おそらく、ブロガー。
今年でフリーランス 6年目。