Unity2018のVRCでConstraintを使おう(初心者向け)

はじめに

※当記事はUnity2018 4.20f1とVRCSDK2にアップデートしている事を前提としています。

4/2、VRChatがUnity2018に正式対応しました。

当アップデートによって以下のコンポーネントが使用できるようになったそうです。

・AimConstraint
・LookAtConstraint
・ParentConstraint
・PositionConstraint
・RotationConstraint
・ScaleConstraint

当記事では、これらについて解説していきます。

Constraintって?

Constraintの日本語訳は、「拘束」です。

文字通り、オブジェクトの位置、回転。大きさを別のオブジェクトに関連付けできるコンポーネントになります。

オブジェクトの一括管理

サブアームの軽量化

疑似ピックアップ(https://note.com/berylmoon/n/n231db5a46d40)の軽量化

アイテムの持ち替え

などに使用できます。

Constraintの入れ方

試しにCubeに入れてみましょう

①Hierarchy上で右クリック→3DObject→CubeでCubeを出します

キャプチャ

②InspectorのAdd Componentから、Constraintと入力した後、任意のコンポーネントを入れる。

Inkedキャプチャ_LI

画像2

以上でConstraintを入れることができます。

次はそれぞれのコンポーネントの特性の解説をしていきます。

Aim Constraint


説明が難しいので一度導入してから解説します。

Constraintの入れ方で解説したように、まずはCubeにAim Constraintを入れてみましょう

Inkedキャプチャ  _LI

②Aim ConstraintのList is Emptyの+ボタンを押しましょう

Inkedキャプチャ                   _LI

③Hierarchy上で右クリック→3DObject→Sphereから、球体を生成してCubeの少し前に移動させる。

キャプチャaa

③Cubeに戻って、CubeのAim Constraint→SourcesのNoneと書いてある場所にSphereをドラッグアンドドロップする。

Inkedキャプチャ.bbPNG_LI

これでAim Constraintの導入が終わったので、次は挙動を見ていきます。

①画面上部の再生ボタンを押す

Inkedキャプチャcc_LI

②Aim ConstraintのIs Activeにチェックを入れる

Inkedキャプチャddd_LI

この状態でSphereを動かすと、そのSphereの方向をCubeが向くようになります。

Is ActiveがOnの時に実行、Offの時に通常の動きをすると覚えておきましょう。

このように、"Aim Constraintを入れたオブジェクトAは、Soucesに入れたオブジェクトBの方向を向く"ということが確認できます。

Final IkのAim Ikも似たような性質を持っていますが、Final Ikは1万円ほどの値段がするので、こちらの方がコスパ的に考えて良いですね。

Look at Constraint

Look at Constraintは、Aim Constraintの簡略版といった扱いらしいです。

導入方法も性質もAim Constraintとあまり変わらないのでここでは省略します。

Parent Constraint

Parent Constraintも解説するのが難しいので、導入してから解説します。

Constraintの入れ方で解説したように、CubeにParent Constraintを入れてみましょう

キャプチャeeee

②Aim Constraintと同じように、CubeのParent Constraint→soucesの+ボタンを押す。出てきたNoneの中にSphereを入れる。

Inkedキャプチャfff_LI

これで導入はできました。次に挙動を見てみましょう。

先ほどと同じように画面上部の再生ボタンを押した後にParent ConstraintのIs Activeにチェックを入れましょう。

すると、SphereがCubeの位置に移動するのがわかるかと思います。

Parent Constraintを入れたオブジェクトAは、Soucesに入れたオブジェクトBの子であるかのように移動、回転するという特性があります。

このParent ConstraintはFixJointのような事をRigidBody無しで再現できるのです(若干仕様が違いますが...)

その他のConstraintについて

まだ紹介していない

・Position Constraint
・Rotation Constraint
・Scale Constraint

の三つですが、基本的にParent Constraintの性質を細かく分けた性質をそれぞれ持っています。

・Position Constraint→Parent Constraintの位置のみ影響されるバージョン

・Rotation Constraint→Parent Constrantの回転のみ影響されるバージョン

・Scale Constraint→Parent Constrantの大きさのみ影響されるバージョン

以上でConstraint系コンポーネントの解説を終えます。

便利なコンポーネントなので、是非活用してみましょう。



この記事が気に入ったらサポートをしてみませんか?