名古屋でアプリ・VR開発を行っています
ワクワクできるゲームをガンガン開発リリース中!

【Unity】ゲームオブジェクトのCenterはどうやって求められているのか

こんにちは、SAT-BOXのコアラです。

今回は、↓の画像にあるCenterについて検証してみました。
f:id:sat-box:20181015172103p:plain

押せばCenterとPivotを切り替えられて、それによってシーンビューでの移動や回転の基点が変わる、というものなんですが、僕は基本Pivotしか使わないので、そもそもどのあたり指してるんだろうと思っていました。

大体想像はついてましたが、検証してみたら案外しっかりしていたので早速紹介していきます。


まず、Centerの座標を決める要因となるコンポーネントがありました。
ColliderとRendererです。
勿論、この2つを継承しているコンポーネントも含めます(BoxColliderやMeshRenderer、SpriteRendererも)

そのコンポーネントがゲームオブジェクトについていないと、Centerの座標はPivotと同じです。

ColliderやRendererがついている場合は、
子も含めて、そのゲームオブジェクト全てのCollider、Rendererからバウンディングボックスを作成し、その中心をCenterの座標としているみたいです。


画像でも説明します。楽なので分かりやすいように2Dです。

↓の画像は、レンダラー(Sphere)とコライダー(Box)を持つゲームオブジェクトを選択しています。設定はCenterではなくPivotです。
f:id:sat-box:20181015182502p:plain


この場合、↓の青線のようなバウンディングボックスが作られ、その中心がCenterとなります。
f:id:sat-box:20181015182655p:plain


↓設定をCenterにして、バウンディングボックスの中央を求めるため対角線を引いてみました。
f:id:sat-box:20181015184423p:plain

画像に書き加えた線なので誤差ありますが、正しいようです。


求め方が分かったので試しにスクリプト作ってみましたが、良い感じでした。
ただソースコード汚いのでまた今度貼りますm(_ _)m
これ使って何か面白いことも出来そうなので、また別の記事で書きたいと思います。


※追記
ソースコード含め新記事書きました!
sat-box.hatenablog.jp