ランダムにオブジェクトを生成

記事作成 2019年6月
PlayMaker 1.9.0 / Unity 2018.2.6f1

ランダムな場所からオブジェクトを発生させます。
空中から、Cube が発生、落下。落ちた Cube は一定時間で消滅します。

----------------------------------------------

----------------------------------------------
発生場所とするところに、目印となるオブジェクトを置きます。
空オブジェでもいいのですが、わかりやすいように Sphere を3つ並べてみます。

Sphereは一応 Collider のチェックを外しておきます。
また、Mesh Renderer のチェックも外すと、動画のようにメッシュが非表示になります。

----------------------------------------------
発生させる、Cube を作ります。

Cube には [RigidBody] をつけます。
また、この例では Collider のMaterial に Physic Material「Cube 跳ねるため」
を作成し適用しています

着地したとき跳ねるためです。なくても構いません。

----------------------------------------------
Cube に状態遷移を設定し、ノード、アクションを以下のようにしてみます。
(Disconnected…はとりあえず関係ないです)

はじめの状態、[Set Random Rotation]で発生直後にランダムに傾けます。
こうしないと、すべて同じ状態で落下し面白みがないからです。

そして [Wait] 5 でTime 5 経った後、遷移。


[Destroy Self] で 消滅します。
これで、シーンがCubeでいっぱいになってしまうことを防ぎます。

一度この状態で再生し、Cubeの動きを確かめてみるといいでしょう。

----------------------------------------------
作成、設定した Cube をProject 内のフォルダにドロップし、プレハブ化します。
これで、発生させるオブジェクトの準備ができました。

----------------------------------------------
シーン上に作った空オブジェクト、「emp ランダム発生」に
このような、ノード、アクションを設定します。

前回目標を追いかけるオブジェクトでは [Get Random Object] でTagを目印にシーン上の
オブジェクトを選択しましたが今回は

[Select Random Game Object] で直接、出現場所Sphere をドロップした選択リストの
中から選んで、GameObject変数、[gobj 選択_出現場所]に格納します。そして

[Creat Object] で先程作成した、Cubeプレハブを生成します。Game Object欄にドロップ。
Spawn Point(生成場所)は、 [gobj 選択_出現場所]です。


状態は、自動的に遷移し、次の [Wait] でTime 0.5 待った後
また「マーカからCubuの発生」に戻ります。
(アクションが Wait だけの場合、イベント指定がなくても時間経過後にFINISHから遷移します)

これで、再生するとはじめの動画のように動作します。

----------------------------------------------
@おまけ
落下物が、Cube だけでは寂しいので種類を増やしてみたい。どうしましょう。

Cube と同様に Capusele をプレハブ化してみます。設定も Cube 同様です。
その上で「emp ランダム発生」に以下のように変更を加えます。

2つのアクションの間に、もう一つ
[Select Random Game Object]を追加し、選択リストに、作成したプレハブ
Cube と Capsule をドロップ。
選択したオブジェクトは、新たな変数 [gobj 選択_出現オブジェクト] に格納。

[Creat Object]では、生成する Game Object にその変数 [gobj 選択_出現オブジェクト]を。

このように、[Select Random Game Object] はシーン上のオブジェ同様に
プレハブも選択肢にできます。
----------------------------------------------
再生してみると、このように Cube と Cupsile がランダムに、
またランダムな場所から出現します。





0 件のコメント:

コメントを投稿