Unity5学習の際の覚え書き。

ゲームオブジェクトの生成

ゲームオブジェクトを新たに作るには、GameObjectクラスにある「CreatePrimitive」という静的メソッドを使う。
引数に、作成するオブジェクトのタイプを指定して呼び出す。

ゲームオブジェクトを作る
GameObject 変数 = GameObject.CreatePrimitive( <PrimitiveType> );

(例)
GameObject obj = GameObject.CreatePrimitive (PrimitiveType.Cube);
引数には、PrimitiveTypeの値を指定。

PrimitiveTypeに用意されている値
Sphere / Capsule / Cylinder / Cube / Plane

空のゲームオブジェクトを作成する
GameObject emptyGameObject = new GameObject("GameObject Name");

その他いろいろ
http://loumo.jp/wp/archive/20140531004758/

物理エンジンを追加する

CreatePrimitiveで作成されたゲームオブジェクトには、リジッドボディは用意されていない。
Transformを操作して移動したりはできるが、AddForceで転がしたりすることはできない。
物理エンジンを利用している場合、作成したゲームオブジェクトにリジッドボディを組み込む必要がある。

リジッドボディを組み込む
<GameObject> .AddComponent ("Rigidbody");
コンポーネントの追加は、GameObjectの「AddComponent」で行う。
リジッドボディを追加するなら、引数に"Rigidbody"と指定すればOK。
後は、そのゲームオブジェクトのrigidbodyにあるプロパティなどを使って細かな調整をすればいい。

生成したオブジェクトに色々付与する

GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.tag = "ob_wall";
obj.transform.localScale = new Vector3 (3, 3, 3);
obj.transform.position = new Vector3 (10, 1, 10);
obj.GetComponent<Renderer>().material.mainTexture = txtr;
obj.GetComponent<Renderer>().material.color = new Color(1, 0, 0, 0.5f);
obj.GetComponent<Renderer>().shader = Shader.Find("Transparent/Diffuse");
obj.AddComponent<Rigidbody>();
obj.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezePositionY;
obj.GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeRotation;
obj.GetComponent<Collider>().isTrigger = true;
obj.AddComponent("TestScript"); // Ver4の書き方

ゲームオブジェクトの削除

既にあるゲームオブジェクトを削除するには、GameObjectの「Destroy」メソッドを使う。

ゲームオブジェクトを削除する
GameObject.Destroy ( <GameObject> );
GameObject.Destroy ( <GameObject>, 秒数 );

// 自身を消す場合
GameObject.Destroy ( gameObject );
GameObject.Destroy ( gameObject, 5f );

引数にGameObjectインスタンスを指定すれば、それが削除される。
第2匹数に秒数を示すfloat値を指定すると、その秒数後に削除される。

ボールが増えるスクリプト

public class myscript : MonoBehaviour {
	GameObject[] cubes = new GameObject[4];
	GameObject[] gos = new GameObject[4];

	void Start () {
	}

	void Update () {
		AddForceAll ();
	}

	// 作ったボールが近寄ってくる
	void AddForceAll(){
		GameObject[] objs = GameObject.FindGameObjectsWithTag ("sphere");
		// sphereタグがついたスフィアを1つずつ処理していく
		foreach(GameObject obj in objs){
			// 作ったボールのtransformをvecに保管
			Vector3 vec = obj.transform.position;
			// 現在地から作ったボールの位置を引き、相手の位置から自分の位置に向かうベクトルを得る
			// 自分の位置から相手の位置を引くと、「相手の位置から自分の位置に向かうベクトル」を得ることができる。
			Vector3 dir = transform.position - vec;
			// ベクトルを弾を動かす力にする(力を1/10に弱めて)
			obj.GetComponent<Rigidbody> ().AddForce (dir * 0.1f);
		}
	}

	void OnTriggerEnter(Collider collider){
		if (collider.gameObject.name.StartsWith ("Cube")) {
			for (int i = 0; i < 4; i++) {
				if (cubes [i] == collider.gameObject) {
					ParticleSystem ps = (ParticleSystem)gos [i].GetComponent ("ParticleSystem");
					ps.Play ();
					Vector3 p = cubes[i].transform.position;
					cubes[i].SetActive(false);

					// CreatePrimitiveでスフィアを作成
					GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Sphere);
					obj.AddComponent<Rigidbody>();		// rigidbodyを与える
					obj.transform.position = p;			// 元々あったtransformに設定
					obj.GetComponent<Renderer>().material.color = Color.cyan;	// 色を変更
					obj.tag = "sphere";					// タグ付け
				}
			}
		}
	}
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】
Wiki記法ガイド

リンク

ゲームバー大阪心斎橋

ゲームバー大阪梅田

ゲームバー大阪心斎橋

ダーツ&ダイニングバー大阪梅田

メニュー

Unity


スマホ操作

Unity - GameObject

Unity - 3DCG

メンバーのみ編集できます