知ってるとちょっと便利な「Constraint」の機能

2025/01/31に公開

はじめに

業務上で積極的に使うことはあまりないのですが、知ってるとちょっとだけ便利な Unity の機能を紹介します。

Unity Editor で演出等を作成する上で、アニメーションデザイナーさんに演出を作成いただく際、Animation Clip 等でいただくことが多いと思うのですが、処理の都合上、GameObject の親子関係を変えたいが、変更するとアニメーションが動かなくなるため親子関係を調整できないことがたまに発生します。
アニメーションを調整してもらうのは手間がかかりすぎるし、アニメーション調整なしで動かそうとすると処理が煩雑になりすぎる場合、以下で解説する Constraint を使うことで最小限の変更で対応できることがあります。

Constraint 機能の紹介

Constraint は別の指定した GameObject の動きに合わせて、対象の GameObject の動きを制御する機能となっています。
現在は以下の6種類が実装されています。

  • AimConstraint
  • LookAtConstraint
  • ParentConstraint
  • PositionConstraint
  • RotationConstraint
  • ScaleConstraint

公式マニュアル
https://docs.unity3d.com/ja/2023.2/Manual/Constraints.html

使用例

今回の場合は、擬似的にオブジェクトの親子関係を調整したいという要件になりますので、
ParentConstraint と ScaleConstraint を使おうと思います。
(ParentConstraint は Scale に対応していないため)

今回は、オブジェクトの親子関係を何らかの理由で以下の形にする必要があり、
その上で Constraint Root オブジェクトを Window オブジェクトに追従させたいという要件があるとします。

その状態で、そのまま Window オブジェクトをアニメーションさせた場合は以下のように Constraint Root オブジェクトはアニメーションに追従しません

そこで、以下のように Constraint を設定します。

再度、 Window オブジェクトをアニメーションさせると、以下のように Constraint Root オブジェクトがアニメーションに追従します。

おわりに

Constraint は Unity2018 の時に追加された機能なのですが、(そもそもDCCツールとの連携用の機能っぽいのもあり)あんまり使っているという話を聞かないのですが、こういった機能を知っておくと何かのタイミングで楽に機能を実装できます。
UnityEditor に限らず、使っているツールの機能は把握しておくといいことがあるという話でした。

お読みいただきありがとうございます。

Happy Elements

Discussion