この記事でのバージョン
Unity 2018.1.0b2
はじめに
Unityではオブジェクトを親子関係に配置すると、
子のPositionが親のPositionに合わせて変化(追従)するようになります。
しかし、親子関係にすると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を有効にするだけ。
これだけでプレイヤーにカメラが追従するようになります。
しかもエディタを実行していなくても追従します。
また、カメラとプレイヤーの距離関係はConstraing Settingsで設定します。
Lockを外し、Position At Restでカメラの初期位置、Position Offsetでプレイヤーとの距離を指定します。
なお、使っている画像は先日紹介したCorgi Engineのもので、
Corgi Engine - 2D + 2.5D Platformer - Asset Store |
そもそもCorgi Engineにはカメラ追従機能が付いてたりします。
おわりに
Position Constraintを使う事で、かなり簡単にPositionを追従出来るようになりましたね!
ただ、プログラムでやったとしても大した処理ではないので凄い便利になったかと言われると……。