親オブジェクトの子にプレハブから一定時間で自動生成するやり方(Unity,C#)

今日は,長々考えていた一定時間で自動生成する方法ができたので,メモしておきます!!

まぁ今考えるとめちゃ簡単なんですが・・・

 

成果はこんな感じです!!

f:id:ka1357amnbpdr:20190519000604g:plain

こんな感じで

親オブジェクト→太陽

子オブジェクト→火の玉?

になっています

f:id:ka1357amnbpdr:20190519000731p:plain

こんな感じです

 

今回やりたかったことは,

  • 上から一定の時間の間隔で,オブジェクトが自動で生成される.
  • 画面いっぱいにならないように一定時間後に,削除する.

(本来は,横から玉が出てきてマリオのキラーみたいな感じにしたかったのですが...)

 

こちらがコードになります

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class fireball : MonoBehaviour
{
public GameObject PrefabsBall;//プレハブをセットする
GameObject Obj;
GameObject ball;//親オブジェクトの設定
private Vector3 Position;
// Start is called before the first frame update
void Start()
{
// ヒエラルキーからfireballを探す
ball = GameObject.Find("sun");
InvokeRepeating("CreateBall",10f,0.5f);
}

// Update is called once per frame
void Update(){
// Object reference not set to an instance of an objectのエラーが起きた
}
void CreateBall(){
Position = new Vector3(Random.Range(19.27f,36.66f),2f,0.0f);
Obj = (GameObject)Instantiate (PrefabsBall,Position, Quaternion.identity);
 
// Debug.Log("fireballができた");
Destroy(Obj,3f);
}
}

これを親オブジェクトの太陽にアタッチします.

 

 

一応,コードの説明を

InvokeRepeating(関数名,呼び出されてからどのくらい待ってから始まるか,感覚の時間)

docs.unity3d.com

で,繰り返し生成しています.

コルーチンというのもあるらしいのですが,ちょっとよくわからなかったので今後使ってみたいと思います!!こっちだったら個数などの制限をかけたりできるそうです

developer.wonderpla.net

 

あとは,普通にInstantiateでプレハブから生成していきます.

ここで親オブジェクトの下に作るには,

Obj.transform.parent = ball.transform;

のところを入れるとできるようになります!!

 

これで一応ゲームの完成したのであとは微調整をしていくのみですね!!

 

あ,ジャンプ音をつけないと.....

 

 

 

 

freemさん,UnityRoomにゲームを公開しました!

クリアできるようになったのでよろしくお願いします〜〜

よろしくお願いします ~~

unityroom.com