Version: Unity 6.0 (6000.0)
言語 : 日本語
Prefab instance Inspector reference
Aim Constraint

Constraints

Constraint (コンストレイント) コンポーネントは、ゲームオブジェクトの位置、回転、スケールをもう 1 つのゲームオブジェクトに紐づけます。コンストレイン (制約) されたゲームオブジェクトは、それが紐づけられたゲームオブジェクトに連動して移動、回転、スケールします。

Unity は以下のタイプの Constraint コンポーネントをサポートします。

  • Aim:コンストレインされたゲームオブジェクトを、紐づけられたゲームオブジェクトを向くように回転します。

  • Look At:コンストレインされたゲームオブジェクトを、紐づけられたゲームオブジェクトを向くように回転します (簡略化された Aim Constraint)。

  • Parent:コンストレインされたゲームオブジェクトを、紐づけられたゲームオブジェクトに連動させて移動、回転します。

  • Position:コンストレインされたゲームオブジェクトを、紐づけられたゲームオブジェクトと連動させて移動します。

  • Rotation:コンストレインされたゲームオブジェクトを、紐づけられたゲームオブジェクトと連動させて回転します。

  • Scale:コンストレインされたゲームオブジェクトを、紐づけられたゲームオブジェクトと連動させてスケールします。

ゲームオブジェクトの紐付け

紐付けするゲームオブジェクトを指定するには Constraint コンポーネントの Sources リストを使用します。

例えば、2D シューティングゲームでプレイヤーの Spaceship (宇宙船) に十字線を追従させるには、Position Constraint コンポーネントを十字線に追加します。十字線を Spaceship に紐づけるには、Position Constraint コンポーネントに移動し、Spaceship ゲームオブジェクトを Sources リストに追加します。プレイヤーが Spaceship を動かすと、十字線が続きます。

十字線のための Position Constraint。プレイヤーの Spaceship (赤色) に十字線が追従します。
十字線のための Position Constraint。プレイヤーの Spaceship (赤色) に十字線が追従します。

1 つのコンストレイントは複数のソースゲームオブジェクトに紐づけできます。この場合、コンストレイントはソースゲームオブジェクトの平均の位置、回転、スケールを使用します。例えば、ライトをある 1 群のゲームオブジェクトに向けたい場合は、Light ゲームオブジェクトに Aim Constraint コンポーネントを追加します。次に、Sources リストに照らしたいゲームオブジェクトを追加します。Aim Constraint は、Sources リストのゲームオブジェクトの平均位置の方向にライトを向けます。

Unity はソースゲームオブジェクトを Sources リストに表示されている順に評価します。Position ConstraintScale Constraint では、順番は影響しません。ただし、Parent ConstraintRotation ConstraintAim Constraint には、順番が影響します。意図した結果を得るには、ゲームオブジェクトをドラッグアンドドロップして Sources リストの順序を変更します。

一連のゲームオブジェクトをコンストレインすることができます。例えば、母親のアヒルの後に子アヒルを 1 列に続かせるとします。ゲームオブジェクト Duckling1Position Constraint コンポーネントを追加します。Sources リストで MotherDuck に紐づけます。次に、Duckling2Position Constraint を追加し、Duckling1 に紐づけします。MotherDuck ゲームオブジェクトがシーン内を移動するとき、Duckling1MotherDuck の後に続き、Duckling2Duckling1 の後に続きます。

コンストレイントのサイクルを作成しないようにします。なぜなら、ゲーム中に予期せぬ更新を引き起こす原因になるためです。

コンストレイントのプロパティの設定

コンストレイントの共通プロパティを変更するには Inspector ウィンドウ を使用します。

Position Constraint の Weight と Constraint Settings
Position Constraint の Weight と Constraint Settings

コンストレイントの影響の強さを変更するには Weight を使用します。ウェイトが 1 の場合、ソースゲームオブジェクトと同じ割合でコンストレインされたゲームオブジェクトを更新します。ウェイトが 0 の場合、コンストレイントの効果は完全に無くなります。各ソースゲームオブジェクトには個々のウェイトもあります。

Constraint SettingsPosition At Rest プロパティで、Weight が 0 のとき、または Freeze Position Axes の対応するプロパティがチェックされていないときに使用する X、Y、Z の値を指定します。

Constraint SettingsPosition Offset プロパティで、ゲームオブジェクトをコンストレインするときに使用する X、Y、Z の値を指定します。

Freeze Position Axes の設定で、コンストレイントを実際に適用する軸を切り替えます。

コンストレイントのアクティベーションとロック

コンストレイントの利用には、アクティベーションとロックという 2 つの状態があります。

コンストレイントをアクティベートすると、コンストレインされたゲームオブジェクトの位置、回転、スケールを評価します。Unity は非アクティブなコンストレイントを評価しません。

コンストレイントをロックすると、ゲームオブジェクトを移動、回転、スケールすることができるようになります。ロックされたコンストレイントは、ゲームオブジェクトの Transform の関連部分を制御します。ロックされたコンストレイントを使用してゲームオブジェクトを手動で移動、回転、スケールすることはできません。また、Constraint Settings も編集できません。

ゲームオブジェクトの位置、回転、スケールを手動で編集するには、そのコンストレイントのロックを解除します。ロックされていない状態でコンストレイントがアクティブである場合、コンストレインされたゲームオブジェクトかそのソースゲームオブジェクトを移動、回転、スケールすると、コンストレイントの Constraint Settings が更新されます。

Constraint コンポーネントをゲームオブジェクトに追加するとき、コンストレイントはデフォルトでは非アクティブでロックされていません。そのため、コンストレイントをアクティベートしてロックする前に、コンストレインされたゲームオブジェクトとソースゲームオブジェクトの位置、回転、スケールを微調整できます。

ActivateZero ボタンで簡単に Constraint Settings を更新できます。

  • Activate:ソースゲームオブジェクトからの現在のオフセットを保存し、コンストレインされたゲームオブジェクトをアクティベートしてロックします。

  • Zero:ソースゲームオブジェクトに合わせて位置、回転、スケールをリセットし、その後、コンストレインされたゲームオブジェクトをアクティベートしてロックします。

コンストレイントのアニメーション化と結合

コンストレインされたゲームオブジェクトが紐づけられたソースゲームオブジェクトを変更するには、アニメーションクリップを使用します。アニメーションがソースゲームオブジェクトを変更すると、コンストレインされたゲームオブジェクトは変更されます。

また、Constraint コンポーネントのプロパティをアニメーション化することもできます。例えば、キャラクターの剣を手から背中に移動させるのに Parent Constraint を使用します。最初に、剣のゲームオブジェクトに Parent Constraint を追加します。Sources リストで、コンストレイントをキャラクターの手とキャラクターの背骨に紐づけます。剣をアニメーション化するには、各ソースにウェイトのキーフレームを追加します。剣を背中から手に移動するアニメーションにするには、キーフレームを追加して手のウェイトを 0 から 1 に変更し、背骨のキーフレームのウェイトを 1 から 0 にします。

同じゲームオブジェクトに複数種類の Constraint コンポーネントを追加することができます。ゲームオブジェクトを更新するとき、Unity は Inspector ウィンドウ に表示されている順に Constraint コンポーネントを評価します。1 つのゲームオブジェクトに、同じ種類の Constraint コンポーネントは 1 つだけしかアタッチできません。例えば、Position Constraint を複数追加することはできません。

コンストレイントのインポート

Autodesk® Maya® と MotionBuilder® から FBX ファイルを Unity エディターにインポートするときに、コンストレイントを加えることができます。Import Settings ウィンドウの Animation タブ をクリックし、Import Constraints をチェックします。

Import Constraints がチェックされている Import Settings
Import Constraints がチェックされている Import Settings

FBX ファイルのすべてのコンストレイントに対して、Unity は自動的に対応する Constraint コンポーネントを加え、それを適切なゲームオブジェクトに紐づけます。

コンストレイントの追加と編集

Constraint コンポーネントを加えるには、以下の手順を行います。

  1. コンストレインするゲームオブジェクトを選択します。

  2. Inspector ウィンドウで Add Component をクリックし、追加したいコンストレイントのタイプを検索し、クリックして追加します。

  3. ソースゲームオブジェクトを新しいコンストレイントに追加するには、そのゲームオブジェクトを Hierarchy (またはシーンビュー) から Sources リストにドラッグします。

  4. コンストレインされたゲームオブジェクトとそのソースゲームオブジェクトを移動、回転、スケールします。

  5. コンストレイントをアクティベートするには、ActivateZero をクリックするか、Is ActiveLock をチェックします。

Constraint コンポーネントを編集するには、以下の手順を行います。

  1. エディターでコンストレインされたゲームオブジェクトを選択します。

  2. Position At Rest フィールドまたは Position Offset フィールドを調整するには、Inspector ウィンドウで Constraint Settings を展開し、Lock のチェックを外してから値を編集します。

  3. コンストレイントが更新する軸を指定するには、Constraint Settings を展開し、Freeze Position Axes のプロパティをチェックします。

  4. ソースゲームオブジェクトをコンストレイントに追加するには、以下の手順を行います。

    • Sources リストに空のスロットがない場合は、リストの下部にある + をクリックします。

    • コンストレイントのソースとして使用したいゲームオブジェクトをシーンから Sources リストにドラッグします。

  5. ソースゲームオブジェクトを削除するには、Sources リストからゲームオブジェクトを選択し、リストの下にあるマイナス記号 (-) をクリックします。

  6. Sources リストのソースゲームオブジェクトを並べ替えるには、移動したい各ゲームオブジェクトの左側のダブルバーアイコンをクリックし、上下にドラッグします。

    注意____Sources リストでは、位置、回転、スケールのコンストレイントに順序は影響しません。ただし、Parent Constraint および Aim Constraint がゲームオブジェクトを移動または回転する方法には順序が影響します。

  7. Is ActiveLock をチェックします。


  • 2018–04–11

  • コンストレイントは、2018.1 で追加 NewIn20181

Prefab instance Inspector reference
Aim Constraint