乱数Unityのマニュアルにある『ランダムなゲームプレイ要素の追加』を出発点とした乱数祭りもいよいよ終盤。今回は『空間におけるランダムな点』の項目を使って、実際にオブジェクトをインスタンス化したり、画面に点を描画してみたいと思います。Zそれぞれの値をRandom.valueにすればOK。Random.valueは0から1までのfloat型の値を返してくれるので、ここに立方体の大きさを掛ければ拡大・縮小も簡単です。オブジェクトの中心をベースにランダムな点を描画する場合は、-0.5fから0.5fに補正しておくとちょうどいいかも。例として、Scaleが5の立方体の内部にオブジェクトがインスタンス化されるサンプルを作ってみます。以下のような立方体を目安として、実行時にメッシュを無効化してインスタンス化していきます。目安となる立方体Unityのマニュアルを参考にサンプルコードを作りました。Gist.prefabはInspectorからアタッチできるようにしています。上の画像で表示していた白い立方体の位置を目安にしているので、offsetも用意しています。白い立方体の中心をベースとするため、Random.Rangeを使って+方向と-方向の両方に分布するようにしました。このスクリプトを白い立方体にアタッチしてゲームを実行すると以下のようになります。(GIFは3倍速)ちょっとずつ立方体の輪郭が球体のランダムオブジェクトを配置する範囲が球体の場合は、Random.insideUnitSphereを使うと便利。半径が1の球体の内部にあるランダムな点をVector3型で返してくれます。半径が1だとTransformのScaleは2に該当するので若干注意は必要ですが、こちらも簡単にランダムな値を取得できます。以下のようなメソッドを追加して、球体の範囲内にオブジェクトをインスタンス化するようにしてみました。Gist.上記のメソッドを追加して実行すると以下のようになります。いい感じにランダムランダムにオブジェクトを生成し、全体を埋めるような位置どりでした。円のランダムUnityのマニュアルでは球体ではなく平面の円の内部にある位置を返すRandom.insideUnitCircleも掲載されているのでそちらもサンプルを作ってみます。上と同じように白一色ってのも寂しいので、プリンターのインク色を足してみました。色もランダムでprefabのリストを保持するフィールドを用意し、Inspectorから上のインク色オブジェクトを追加します。Random.insideUnitCircleではVector2型が返されるので、それを使うとX-Y平面状にオブジェクトを配置することができます。Gist.メソッドを追加したらスクリプトを保存してゲームを実行します。カラフルだと楽しいX-Y平面の円の範囲内にオブジェクトがインスタンス化されました。時間経過でシアン(水色)の割合が増えているように見えますが、これは乱数の偏りではなく、描画順の問題のようです。試しにPrefabとして使用したオブジェクトを重ねてみると、以下のようになります。マゼンタ(ピンク)の順番になっていることから、Prefabのインスタンス化を行う際も同じように手前に描画されたようです。手前に来るオブジェクトが増えれば、その分全体的にシアン(水色)が多いように見えてしまいますね。どの順番で描画されるかはMaterialの話になってくるのでここでは深く突っ込まないようにします。どのケースも偏りはなさそうそれぞれのGIF動画を眺めてみても、ある領域だけ全然オブジェクトが生成されないといった極端な乱数の偏りはなさそうですね。Random.insideUnitSphereもRandom.insideUnitCircleも、内部的には多分同じアルゴリズムで、乱数を取る範囲だけ違うんだろーなーと予想。そのうち乱数の性能も確認してみたいです。今回でUnityのマニュアルに載っている範囲を制覇できたので、あとは別の資料を使って乱数への理解を深めるだけ。乱数の世界は結構沼いですが、ゲームでは乱数が欠かせないし極めたいなーと。乱数の状態保存とかシードの話もやってないので、次回以降はその辺りも触れていきたいです。ゲーム開発の攻略チャートを作りました!「ゲームを作ってみたいけど、何から手を付けていいか分からない!」そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。投稿一覧Unityを使ってアプリを作ったり、Assetを作ったりしてる個人開発者。Unity全般ネタとAsset開発の情報を扱っています。Asset開発は日本語の情報が少ないのよね。ことで些細なネタでも情報を蓄積するのが目的です。ラプラスのドア』をリリースしました。確率の無情さと響きあうゲームです。ブラウザで遊[...]【Unity】ゲームといえばランダム要素。2018.06.19UnityではRandomクラスを使って簡単に乱数を取得することができます。2018.06.22UnityのRandomクラスって、結構確率論に沿ってるんですね。自分で手を動かして確認してみると実感します。2018.06.24AnimationCurveを使って、連続的な確率変数に重み付けをします。2018.06.22UnityのRandomクラスを使って、サイコロを振るケースを考えます。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。todoUnityのアセットを作ったり、スマホ向けのアプリを作っています。このブログではUnity初心者に向けたチュートリアルやテクニックを放出しています。詳しいプロフィールはこちら。お仕事の相談や現在提供中のサービスについては、こちらの『サービス内容』のページをご覧ください。Explorers_todoオンライントレーニングのサイトをオープン!エクスプラボを運営しているtodoが、より集中的にゲーム作りについて学べるオンライントレーニングのサイトをオープンしました。エクスプラボのトレーニングルーム』です。勉強したことの進捗も表示できるようになっているので、どれだけ頑張ったのかが分かるようになっています。ゲーム開発の攻略チャート』というe-bookをプレゼントしています。メルマガではゲーム開発のテクニックを中心に役立つ情報をお届けします。詳しくはこちら!お仕事の依頼はこちら!ゲーム開発のサポートも可能!エクスプラボではゲーム開発のサポートのサービスも行なっています。いう場合にオススメのプランです。詳細はこちら!もちろん、普通に開発依頼をいただいてもお手伝いします。その場合はお問い合わせへ。【Unity】ポストプロセシングを使って簡単にプロっぽいゲーム画面を作るゲームの作り方を学べるオンライン講座のサイトをオープンしました!RANKING【Unity】Mathfの切り上げ、切り捨て、偶数丸め。使い分けが大事よねMathf【Unity】ゲームといえばランダム要素。(12)作ったアプリ空とにゃんこと風船と癒し系縦スクロール避けゲーの『空とにゃんこと風船と』(TODOWORKS名義でリリース)気軽に遊べるスマートフォン向けアプリです。ボクセルアートで彩られるどこかレトロ、でも新しい世界で癒されてみませんか?ぼく、猫ですって!タップ系RPG『ぼく、猫ですって!』(TODOWORKS名義でリリース)気軽に遊べるスマホRPG。