江上宿六です。
今回はPrefabというのを作ってゲーム内でオブジェクトを自動生成してみます。
これは例えばシューティングだったら弾を出したり敵を出したり、そういう
似たようなオブジェクトを大量に出したりするのに使えたりするものです。
読みはプレハブでいいと思います、建築とかで見かけるあのプレハブです。
今回は新たにプロジェクトとシーンを作ってやりたいと思いますが、というか
シーンの保存についてやりましたっけ。 メニューバーのFileからSaveScene等を
選ぶとシーンが保存されますので、適当に名前を付けて保存してくださいね。
さて、新たなプロジェクト、新たなシーンが作られたら早速ヒエラルキーの
Createから3DObject→Sphereと選択し、Sphereを追加しましょう。 球です。
インスペクターでPositionを(0,5,0)として実行してみましょう。
まぁ、球がちょっと高めの所に配置されただけのなんの変哲も無い結果ですね。
では少し変わった事をしてみましょう。 ヒエラルキーでSphereを選択して
インスペクターの中のAddComponentというのをクリックしてみましょう。
これはオブジェクトに様々な効果を追加できるもので、凄い便利なものです。
今回はPhysics→Rigidbodyと選択し、この球にRigidbodyを付加しましょう。
こんな感じのが追加されるはずです。 この中身については今は別に良いので
再び実行してみましょう。
球がなんか下の方に移動していって画面内から消えました。 そうなんです。
このRigidbodyというのはオブジェクトを物理挙動に従って動かせるもので、
それゆえに重力を受けて下方向(-y軸)に加速しつつ動いていったわけなんです。
スクリプト使わなくてもこんなの出来るって凄い。
こういう物理挙動を行う場合は大抵Colliderというのもセットで扱われます。
これはいわば当たり判定的なもので、今回のSphereには最初からついています。
因みに今まで使っていたCubeにもColliderがついていましたよ。
この辺はさておき、このSphereは画面外に消えても存在し続けているので
ある一定の高さまで行ったら消えるようにしてみましょう。 C#Scriptを追加し
SphereControllerとでも名付けてスクリプトを記述しましょう。
transformのposition.yが-5.0fを下回ったらgameObjectをDestroyするというもの。
このgameObjectというのはこのSphereの事ですね。 そもそもtransformも
gameObjectのインスペクターのtransformの事を指していると思うんですがね。
まぁ、別にどうでも良いですのでスクリプトをアタッチして実行してみましょう。
→
一定の位置までSphereが落ちたらヒエラルキーからSphereが消えているのが
確認出来ます。 こうやって消していかないとメモリを食ったりしますからね。
さて、こうやってSphereが落ちて消えるというものが出来上がりましたが、
このSphereを沢山作りたいとなった場合はどうするべきでしょうか。
沢山SphereをCreateしてアタッチしまくるというのはなんか違うと思うし
流石にこれは手間ですね。 そこで使えるのがPrefabというものなのです。
実際作っていくのは次回ですね。 やっぱり縦長になってしまっているので。