概要
- 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 羅針盤設定 |
|---|
![]() |






