Create Emptyって変な位置にGame Objectを生成するよね・・・
GameObject > Create Empty
してみます。
生成されたGameObjectの Position
を見てみると・・・
あああああ!(0.155,0.255,0.34)ってどこ!?変な位置に生成しないで!
ってなることがよくあります。
これは、 Create Empty
をする時の Scene
タブの表示領域が影響しているみたいです。
どうやらUnity2020.1だと原点にオブジェクトを生成できるらしいぞ!
昨日、こちらのツイートではじめて知ったのですが、Unity2020.1には 原点でオブジェクトを生成
という設定があるようです。これを使えば変な位置に生成されなくて便利ですね!
Unity2020.1でアセットやゲームオブジェクトを複製した時の命名ルールを変えたりオブジェクトを作った時の座標を原点にしたりできるようになってた。 pic.twitter.com/mAT62jKGGH
— KOGA Mitsuhiro (@shiena) July 23, 2020
でも、Unity2018やUnity2019を使いたいケースもまだまだあると思います。
Unity2020.1じゃなくても、オブジェクトを原点 (0,0,0)
に生成する方法がないか調べてみました!
Unity2020.1じゃなくてもできる方法見つけた
調べてみたら、まったく同じ悩みの質問を見つけました。
Is there a way to force new objects to always be created at (0,0,0,)?
こちらでは拡張エディターを作る手法がベストアンサーに選ばれてました。サンプルコードが記載されてますので、そちらを参考に拡張エディターを作ってみました。
常に (0,0,0)
の位置にCreate Emptyする拡張エディターを作る
Assetsフォルダー配下に Editor
フォルダーを作成し、そこに GameObjectCreation.cs
を作成します。内容は以下のようにします。
using UnityEngine;
using UnityEditor;
public class GameObjectCreation : MonoBehaviour
{
[MenuItem("GameObject/Create At 0 #&0")]
static void createAtZero()
{
GameObject go = new GameObject("GameObject");
go.transform.position = Vector3.zero;
go.transform.rotation = Quaternion.identity;
}
}
これで拡張エディターは完成です!
(ベストアンサーのコードはもっと長いですが、とりあえず必要なところだけ抽出しました。)
メニューに以下のように Create At 0
というのが追加されています。
試しに押してみると、
ちゃんと (0,0,0)
に生成されてますね!
Shift+Alt+0
でも生成できました。
さいごに
無事に解決してよかったです。本記事の作成にあたり、以下を参考にさせていただきました。ありがとうございました。