Unity 2018で、Aim Constraint、Parent Constraint、Position Constraint、Rotatoin Constraint、Scale Constraintの5つのConstraint戦隊が登場しました。
この機能は、複数のオブジェクトの大きさや位置、向きを元に自身の位置を調整する機能です。
この機能を活用すれば、複数のキャラクターの中央に配置する…や、複数のキャラクターの方向を向くようにする…といった表現を簡単に実現できそうです。
例えば上のGifアニメでは、魔王が複数の猫キャラ(勇者・村人A・村人B)の中央に位移動させられており、かつ魔王は勇者の方向を常に向くように制限されています。
今回はこのConstraint系のコンポーネントの動作について紹介します。
追記:どうも、DCCツールと連携するためのものみたいです。
目次
- Constraintという機能
- Constraintの設定のアレコレ
- 複数のオブジェクトの中央に行く Position Constraint
- 複数のオブジェクトの方向を向くAim Constraint
- 複数のオブジェクトの向きを元に向きを決める Rotation Constraint
- 複数のオブジェクトの大きさを元に大きさを決めるScale Constraint
- オブジェクトの動きを追随する Parent Constraint
- 感想
- 関連
Constraintという機能
使い方は簡単です。
- 魔王(のGameObject)にScale Constraintを登録します。
- Sourcesの項目を「+」で増やし、勇者パーティの勇者猫、村人A(灰色・ヒロイン)、村人B(茶色)を追加します。
- Activeボタンを押します。
- 勇者パーティの大きさを変更すると、魔王の大きさも変わります。
Constraintの設定のアレコレ
Constraint系は各コンポーネント毎に動作はことなりますが、設定機能は実際には殆ど同じです。まずはソレを紹介します。
Constarint系コンポーネントを再生せずとも動かすIsActiveという項目
IsActiveは、このConstraint系の機能が有効になっているかどうかです。有効になっていると、例えゲームを再生する前であっても他オブジェクトの制約を受けます。
制約の強度はWeightで設定します。1だと完全に制約下に置かれ、0だと制約から開放されます。
制約の元となる情報を取得するSourceという項目
Sourceは制約の元となるオブジェクトの一覧です。制約の優先度のような物は右の数字で指定します。
初期値や動作の制限を設定するConstraint Settingsという項目
少し分かりにくいのが、このConstraintSettingsの項目です。
この項目では、Constraint系でオブジェクトを動かす際のオフセットや制限等を設定します。
例えば魔王(大きい)の大きさを他のキャラクターの大きさで変更したいとします。
初期のままだと、魔王の大きさは他のキャラクター(勇者・村人A・村人B)の平均の大きさとなります。
これでは全く強大に見えません。しかし、Constraintで制約されているので魔王の大きさは変化しません。
そこで以下の手順で魔王の初期設定を変更することで、魔王を大きくたくましく強大にします。もうもやしっ子とは言わせません
- Lockを解除
- 魔王を大きくする
- 再びロックする
複数のオブジェクトの中央に行く Position Constraint
Position Constraintは、複数のオブジェクトの中間にキャラクターを配置します。
魔王に付けた場合、魔王は良くある巨大モンスターのように、他のキャラクターの良いように振り回されます。
複数のオブジェクトの方向を向くAim Constraint
Aim Constraintはオブジェクト群の方向を向きます。正確には複数のオブジェクトの中間(ウェイトによって変動有り)を向きます。
基本的に勇者たちパーティを見ますが、ウェイトを上げることで魔王のヘイトを上げることが出来ます。
複数のオブジェクトの向きを元に向きを決める Rotation Constraint
Rotation Constraintは、魔王を複数のオブジェクトの向きの平均値にします。
つまり勇者パーティが右を向けば魔王は右を向きます。カエルパンチ余裕です。
複数のオブジェクトの大きさを元に大きさを決めるScale Constraint
Scale Constraintは、魔王の大きさを他のオブジェクトのオブジェクトの大きさの平均にします。
これは勇者に巨大化(攻撃力が倍)をかけると魔王も一緒に攻撃力が倍になるリスクがありますが、勇者に収縮をかけられても魔王の弱体化を期待できます。
オブジェクトの動きを追随する Parent Constraint
Parent Constraintは、Position ConstraintとRotation Constraintの複合のような動きになります。ただ、追随するオブジェクトが一つの場合、親子関係のようにオブジェクトを追随するようになります。
勇者がを動かすと魔王は勇者の子のように動きに追随します。
村人Aを動かしても、魔王は村人Aの子のように動きに追随します(カワイイ!)
感想
C#で同じような動きを簡単に組めそうだって?HAHAHA
DCCツールにある 同じような機能 と連携するためのモノみたいです。
どうも聞いた感じ、インポート時にこの機能の設定が割り当てられるのかな?
http://help.autodesk.com/view/MAYAUL/2016/JPN/?guid=GUID-7665A291-FAA7-44C0-BDEB-A6C83482116C
関連
同じくUnity 2018の目玉機能です。こちらは有益です。
コガネブログさんのこの機能の紹介記事です。