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と入力した後、任意のコンポーネントを入れる。
以上でConstraintを入れることができます。
次はそれぞれのコンポーネントの特性の解説をしていきます。
Aim Constraint
説明が難しいので一度導入してから解説します。
①Constraintの入れ方で解説したように、まずはCubeにAim Constraintを入れてみましょう
②Aim ConstraintのList is Emptyの+ボタンを押しましょう
③Hierarchy上で右クリック→3DObject→Sphereから、球体を生成してCubeの少し前に移動させる。
③Cubeに戻って、CubeのAim Constraint→SourcesのNoneと書いてある場所にSphereをドラッグアンドドロップする。
これでAim Constraintの導入が終わったので、次は挙動を見ていきます。
①画面上部の再生ボタンを押す
②Aim ConstraintのIs Activeにチェックを入れる
この状態で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を入れてみましょう
②Aim Constraintと同じように、CubeのParent Constraint→soucesの+ボタンを押す。出てきたNoneの中にSphereを入れる。
これで導入はできました。次に挙動を見てみましょう。
先ほどと同じように画面上部の再生ボタンを押した後に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系コンポーネントの解説を終えます。
便利なコンポーネントなので、是非活用してみましょう。
この記事が気に入ったらサポートをしてみませんか?