概要
- AimConstraint で目的地の方向を常に向く矢印(羅針盤)を作成する
はじめに
私の作成したVRCWorld「Music Stellar Lake」の公開に際して
ワールド内で使っているギミックの中から
特に汎用的なものをピックアップしていくつか紹介していこうと思っています
もし「役に立ったー!」となったらワールドに遊びに行ってもらえると
(ついでに #musicstellarlake のハッシュタグでツイートしてもらえると)
嬉しいです!
環境
- VRCSDK 3.0 2021.08.04.15.07
- Unity 2019.4.29f1
- Usharp v0.20.2
大まかな手順
- 向かせたい場所にGameObjectを配置する
-
VRC_Pickup
をつけたオブジェクトの子に矢印オブジェクトを作成 - 矢印オブジェクトの
Aim Constraint
を設定する - (オプション)もっと羅針盤らしい挙動にする
手順1:向かせたい場所にGameObjectを配置する
- 目的地の位置に GameObject を置きます
- 空の GameObject でOKですがわかりやすいように赤い Cube を置きました
- ヒエラルキー上は
Aim At
手順2:VRC_Pickup
をつけたオブジェクトの子に矢印オブジェクトを作成
-
Indicator Handle
という名前で Sphere を作成 - 子オブジェクトとして矢印オブジェクト(
arrow
)を追加 - ヒエラルキーはこんな感じになります
手順2までのヒエラルキー |
---|
-
Indicator Handle
にVRC_Pickup
を追加し、Rigidbody
コンポーネントのUse Gravity
とIs Kinematic
を適切に設定- 本筋ではないため説明を割愛します
-
arrow
のtransform
のposition
を設定して矢印が見えるように- 今回は y = 1 としました
手順3:矢印オブジェクトの Aim Constraint
を設定する
-
arrow
オブジェクトにAim Constraint
を追加
Aim Constraint の追加 |
---|
- ウィンドウ左上の四方向に矢印が出ているアイコンをクリックし、Unity の Move Tool を有効にする
- Move Tool アイコンの右側のほうに
Local
となっているアイコンがあることを確認する-
もしここが
Global
となっているようならクリックしてLocal
に変更する- ここではツールを使って表示したり動かしたりする基準をローカル座標とするかグローバル座標とするかを決定しています
-
もしここが
Move Toolと Local 確認 |
---|
-
arrow
のtransform
のrotation
がすべて0なのを確認し、矢印の向きが x, y, z のどちら向きかを確認する-
rotation
を 0 にするのを忘れてしまいがちなので注意 - 今回の場合は z のマイナス方向に矢印が向いています
-
矢印の向きをチェック |
---|
- 先ほどの矢印の向きに合わせて
Aim Constraint
のAim Vector
を設定する- 今回であれば Z方向 の負の向きなので (x, y, z) = (0, 0, -1) となる
矢印の方向をZ=-1に設定する |
---|
-
Aim Constraint
のSources
の+
ボタンをクリック -
Aim At
オブジェクトをドラッグ&ドロップでSources
に追加 Aim Constraint
のZero
ボタンをクリックして完成!!!!!
完成時の動作 |
---|
(オプション)もっと羅針盤らしい挙動にする
- この実装だと目的地が上の方にあると矢印が上を向きます
- もし羅針盤のようにy軸方向にのみ回転させたい場合には
Aim Constraint
のConstraint Settings
のFreeze Rotation Axis
の x と y からチェックを外してください
More 羅針盤設定 |
---|