第21回 ランダム関数を使ってみよう

前回の振り返り問題
(再掲) Gキーを押すと、MyCubeクラスからスケールが2倍のインスタンスを作ってレベルに発生させ、さらに、そのインスタンスへの参照を使って、MyCubeがもっている関数(たとえば、以前に作ったHelloHyoujiKansuなど)を呼び出してみてください。

前回のグラフを再利用するだけで上記問題はクリアできます。
b21-1(画像1)
ポイントは2つです。まず、Make TransformノードのScaleを2.0にします。これでサイズが2倍になります。正確には縦横高さの倍率が2倍に(=体積は8倍に)なります。

もう一つのポイントは、関数呼び出しです。スポーンアクタ関数のReturn Value(返り値)は、MyCubeのインスタンスでしたね。もっと詳しく言うと、スポーンアクタ関数によってレベルに配置されたMyCubeのインスタンスを参照するリファレンス型の変数が返り値となります。前回は、このリファレンス型を窓口にしてインスタンスの変数の値を取得しました。今回は、インスタンスの機能を取得します(思い出してください。クラスおよびそこから作られるインスタンスはデータと機能からできているのでした → 第18回 クラスの基本を学ぼう)。やり方は簡単です。Return Valueからワイヤをドラッグして放すことによって、メニューを出して、HelloHyoujiKansuを検索してクリックするだけです。
b21-2(画像2)
これで自動的にスポーンアクタ関数とつながります。なお、この呼び出されるHelloHyoujiKansuは、MyCubeクラスで次のように作成されたものです。
b21-3(画像3)

では、実行してみましょう。まずGキーを押す前の画像です。
b21-4(画像4)
次に、Gキーを押した時の画像です。
b21-5(画像5)
大きいMyCubeのインスタンスが配置されるとともに、画面左上にHelloと表示されました。

ランダム関数の使い方
この「初めて覚える UE4」シリーズは、UE4入門用の教材(公式の動画チュートリアルやドキュメントなど)を不自由なく使えるようにするための知識を得てもらいたくて企画しました。ランダム関数は動画チュートリアルでかなり使われることになります。また、このランダム関数が使えるようになると、(学習面でも)できることに幅が広がります。そこで1回分をこの関数にあてたいと思います。

次は、ランダムな整数値を10個表示するシンプルなグラフです。
b21-6(画像6)
実行すると、次のようになります。
b21-7(画像7)
これらのランダムな値は、RandomInteger(ランダムな整数)という関数によって作り出されます。Max(最大値)が100になっているので、作り出されるランダムな整数値は100以内になります。

さまざまなランダム関数
UE4には、ランダムな値を作るためにさまざまな関数が用意されています。
b21-8(画像8)
緑の枠に入っているのはFloat型のためのものです。ランダムな小数を作り出すことができます。

赤の枠に入っているのはin Range(範囲内の)が付いています。つまり、Min~Maxの範囲の値だけを作り出します。なお、Rotate(回転角度)のためのランダム関数には、赤枠のin Rangeがありませんが、これは回転角度の範囲は最初から0~360に決まっているからです。

紫の枠に入っているのはfrom Stream(ストリームから)が付いています。これは大雑把に言うと、ランダムな値には一種の系列があり、どの系列のランダム値を取り出すかを指定するためのものです(ストリームとはこの系列のことです)。ランダム値は本当はランダムな値ではなく計算で作り出しているものです。であれば、乱数は再現することができます。ある特定の値を入れてやれば、特定の値から始まる乱数を連続して作り出すことができます。これがストリームです。
詳しくは、このサイトのブループリント クイックショット⑫ Random Streamsをご覧ください。特に最後の方の「実験」が参考になるかと思います。

さて、今回のメインは、実は、次の振り返り問題です。うまく落とし穴にはまらないように丁寧に作ってください。

【振り返り問題】
ランダム関数を使ってくじを10回引きます。ランダムの値は0~9です。それぞれランダム値を表示し、7が出たら「当たり!」という表示も行います。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする