facebook twitter hatena line email

「Unity/3d」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(Prefabで複製を作成する)
(Prefabで複製したものを削除)
行38: 行38:
 
  }
 
  }
 
  list_obj.Add(obj);
 
  list_obj.Add(obj);
  // チェック
+
  // 削除チェック
 
  for (int i = 0; i < list_obj.Count; i++)
 
  for (int i = 0; i < list_obj.Count; i++)
 
  {
 
  {
行47: 行47:
 
             if (obj.transform.position.y < -10) {
 
             if (obj.transform.position.y < -10) {
 
                 Destroy(list_obj[i]);
 
                 Destroy(list_obj[i]);
                 Debug.Log("i=" + i);
+
                 Debug.Log("削除 i=" + i);
 
             }
 
             }
 
  }
 
  }

2018年6月28日 (木) 23:30時点における版

3D_Helloworld

  1. 新規プロジェクトで3Dを選択
  2. Hieraruchyで3Dオブジェクト/cubeを選択
  3. cubeを(0, 0, 0)を選択

重力&衝突追加

  1. 地面となる板を追加するために3Dオブジェクト/Planeを追加
  2. 3Dオブジェクト/cubeを選択し追加
  3. cubeを選択し、Inspectorの最下のAddComponentからPhysics/Rigidbodyを選択
  4. cubeの衝突のComponent(Colinder)はもともとついてるので何もしなくて良い。

Prefabで複製を作成する

例としてcubeを複製

  1. Hieraruchyに3Dオブジェクト/cubeを選択し追加
  2. Project(Assetsの下に)にResourcesディレクトリを作成する
  3. cubeをResourcesディレクトリへドラッグする

以下コードで複製できる

for (int i = 0; i < 100; i++) {
           float x = Random.Range(-5.0f, 5.0f);
           float y = i  * 2 - 4f;
           float z = Random.Range(-5.0f, 5.0f);
           GameObject prefab = (GameObject)Resources.Load("Sphere");
           Vector3 position = new Vector3(x, y, z);
           GameObject obj = Instantiate(prefab, position, Quaternion.identity);
}

Resourcesディレクトリはオブジェクトを読込時に使われるディレクトリ名でunityのルールらしい。

Prefabで複製したものを削除

List<GameObject> list_obj = new List<GameObject>();
for (int i = 0; i < 100; i++) {
           float x = Random.Range(-5.0f, 5.0f);
           float y = i  * 2 - 4f;
           float z = Random.Range(-5.0f, 5.0f);
           GameObject prefab = (GameObject)Resources.Load("Sphere");
           Vector3 position = new Vector3(x, y, z);
           GameObject obj = Instantiate(prefab, position, Quaternion.identity);
}
list_obj.Add(obj);
// 削除チェック
for (int i = 0; i < list_obj.Count; i++)
{
           GameObject obj = list_obj[i];
           if (obj == null) {
               continue;
           }
           if (obj.transform.position.y < -10) {
               Destroy(list_obj[i]);
               Debug.Log("削除 i=" + i);
           }
}