(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

親子関係にせず、プログラムも書かずにPositionを追従させる【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2018.1.0b2


はじめに

Unityではオブジェクトを親子関係に配置すると、

子のPositionが親のPositionに合わせて変化(追従)するようになります。


f:id:kan_kikuchi:20180113193353g:plain


しかし、親子関係にするとPositionだけでなく、RotationやScaleも動いてしまいますし、

親を非表示にしたり、Destoryしたら子も一緒に消えてしまいます。

そしてなにより、uGUIだと子が前面に表示されてしまいす。(Canvasが同じな場合は)


なので、単純に位置だけを追従したい場合はそれ用のプログラムを書いていたわけですが、

なんとUnity 2018よりPosition Constraintという

位置を追従させるためだけの新しいコンポーネントが追加されました!


これを使えば親子関係にせず、かつ、プログラムも書かずにPositionを追従させる事が出来るのでは?

と思い、実際に使ってみました!


なお、Constraintシリーズには他にもAim、Parent、Rotatoin、Scaleとバリエーションがあるようです。





Position Constraint

今回はPosition Constraintの仕様例として、

ゲームで良くあるプレイヤーにカメラが追従する処理を実装してみます。


やり方はいたって簡単。

カメラにPosition ConstraintをAddし、

Sources部分にPlayerを追加

さらにIs Activeを有効にするだけ。


f:id:kan_kikuchi:20180113195447j:plain


これだけでプレイヤーにカメラが追従するようになります。

しかもエディタを実行していなくても追従します。


f:id:kan_kikuchi:20180113200409g:plain


また、カメラとプレイヤーの距離関係はConstraing Settingsで設定します。

Lockを外し、Position At Restでカメラの初期位置、Position Offsetでプレイヤーとの距離を指定します。


f:id:kan_kikuchi:20180113200442j:plain


なお、使っている画像は先日紹介したCorgi Engineのもので、




そもそもCorgi Engineにはカメラ追従機能が付いてたりします。


f:id:kan_kikuchi:20180113131305g:plain


おわりに

Position Constraintを使う事で、かなり簡単にPositionを追従出来るようになりましたね!

ただ、プログラムでやったとしても大した処理ではないので凄い便利になったかと言われると……。