ゲームオブジェクトを新たに作るには、GameObjectクラスにある「CreatePrimitive」という静的メソッドを使う。
引数に、作成するオブジェクトのタイプを指定して呼び出す。
ゲームオブジェクトを作る
PrimitiveTypeに用意されている値
空のゲームオブジェクトを作成する
その他いろいろ
http://loumo.jp/wp/archive/20140531004758/
引数に、作成するオブジェクトのタイプを指定して呼び出す。
ゲームオブジェクトを作る
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で転がしたりすることはできない。
物理エンジンを利用している場合、作成したゲームオブジェクトにリジッドボディを組み込む必要がある。
リジッドボディを組み込む
リジッドボディを追加するなら、引数に"Rigidbody"と指定すればOK。
後は、そのゲームオブジェクトのrigidbodyにあるプロパティなどを使って細かな調整をすればいい。
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インスタンスを指定すれば、それが削除される。
第2匹数に秒数を示すfloat値を指定すると、その秒数後に削除される。
ゲームオブジェクトを削除する
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"; // タグ付け } } } } }
コメントをかく