2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

逆引き:親子関係を持たせた Instanciate() 時の生成位置まとめ

Last updated at Posted at 2022-07-22

すごく今更ですが、逆引きできるものが見つけらなかったので備忘録としてまとめときます。
コメントについて有識者様のご助言いただけますと幸いです。よろしくお願いいたします。

親の local 座標の(0, 0, 0)に生成

Instantiate(prefab, parentTransform);
Instantiate(prefab, parentTransform, false);

world 座標の(0, 0, 0)に生成

Instantiate(prefab, parentTransform, true);

これ何に使えるんだろう...

親の local 座標の任意位置に生成

GameObject obj = Instantiate(prefab, new Vector3(1, 2, 3), Quaternion.identity);
obj.transform.SetParent(parentTransform, false);
GameObject obj = Instantiate(prefab, parentTransform);
obj.transform.Translate(1, 2, 3);
obj.transform.Rotate(0, 0, 0, Space.Self);

割と頻出処理な気がするんですが、Instantiate()一発でいけないんでしょうか

world 座標の任意位置に生成

Instantiate(prefab, new Vector3(1, 2, 3), Quaternion.identity, parentTransform);
GameObject obj = Instantiate(prefab, parentTransform);
obj.transform.SetPositionAndRotation(new Vector3(1, 2, 3), Quaternion.identity);

まとめ

Instantiate(prefab, parentTransform) で親子関係だけ定義して、そのあとに Transform.Translate()Transform.Rotate() か、SetPositionAndRotation() で、位置+回転を定義するのが、シンプルで混乱が少なくて良さそうに見えます。ただし、Updete()ループ内で Instanciate()と同時指定しない位置設定は、次の FixedUpdate() が呼ばれないと更新されないらしいので、少し意識する必要はありそうです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?