このページでは、狐火工房の「とことこ精霊馬」の導入方法と、各機能の設定方法について解説します。

「とことこ精霊馬」は、VRChatワールド向けのギミック付き3Dモデルです。
きゅうりで作られた精霊馬と、なすで作られた精霊牛が、とことこと歩きます。
精霊馬・精霊牛を直接Interactして歩かせるほか、付属の呼び鈴を使って、
- プレイヤーのもとへ呼び寄せる
- 指定した場所へ歩かせる
- 前方へ歩かせる
といった動作もできます。
これらの移動ギミックはGlobal動作に対応しており、同じインスタンスにいるプレイヤー間で動作が共有されます。
導入方法
動作環境
本商品は、VRChatワールドでの使用を想定しています。
- Unity 2022.3.22f1
- VRChat Creator Companionで作成したVRChat Worldプロジェクト
- VRChat SDK – Worlds
- UdonSharp
本商品にVRChat SDK本体およびUdonSharp本体は含まれていません。あらかじめ、VRChat Creator CompanionからWorldプロジェクトを作成してください。
UnityPackageをインポートする
ダウンロードしたファイルに含まれている、次のUnityPackageを使用します。
Shoryo_Uma_v1.0.0.unitypackage
Unityで使用するWorldプロジェクトを開き、UnityPackageをインポートしてください。
インポートが完了すると、次のフォルダに商品データが追加されます。
Assets/KitsunebiKobo/Shoryo_Uma/
フォルダ内は、次のように分かれています。
Shoryo_Uma
├─ Animations:アニメーション、Animator Controller
├─ Audio:呼び鈴の効果音
├─ Materials:各種マテリアル
├─ Models:FBXモデル
├─ Prefabs:配置用Prefab
├─ Scripts:UdonSharpスクリプト
└─ Textures:各種テクスチャ
Prefabを配置する
Projectウィンドウで、
Assets/KitsunebiKobo/Shoryo_Uma/Prefabs
を開きます。
このフォルダには、以下のPrefabが入っています。
| Prefab | 説明 |
|---|---|
| Shoryo_Uma.prefab | きゅうりで作られた精霊馬です。 |
| Shoryo_Ushi.prefab | なすで作られた精霊牛です。 |
| Handbell.prefab | 精霊馬・精霊牛へ動作を指示するための呼び鈴です。 |

使用したいPrefabを、HierarchyまたはSceneビューへドラッグ&ドロップしてください。
配置後、位置・回転・スケールを調整し、ClientSimやVRChat上で動作を確認します。
精霊馬・精霊牛を動かす
「とことこ精霊馬」には、精霊馬・精霊牛を動かすためのいくつかの方法があります。
- もっとも簡単なのは、精霊馬・精霊牛を直接Interactする方法です。
- 付属の呼び鈴を使えば、離れた場所から呼び寄せたり、あらかじめ指定した場所へ歩かせたりすることもできます。
- UdonSharpでギミックを制作している場合は、公開メソッドを利用して、スイッチやトリガーなど別のギミックから動かすこともできます。
直接動かす
シーンに配置した精霊馬・精霊牛は、そのままInteractして動かすことができます。
- 歩かせる:停止している精霊馬・精霊牛をInteractすると、現在向いている方向へ、とことこ歩き始めます。
- 停止させる:歩いている精霊馬・精霊牛をもう一度Interactすると、その場で停止します。
呼び鈴で動かす
付属の「Handbell.prefab」を使うと、精霊馬・精霊牛へ離れた場所から動作を指示できます。
呼び鈴を使用する場合は、まずInspectorのTargetsに、操作したい精霊馬・精霊牛を登録します。
Targetsには複数の対象を登録できるため、1つの呼び鈴から精霊馬と精霊牛を同時に動かすこともできます。

呼び鈴をInteractすると鈴の音が鳴り、「Event Type」に設定されている動作が実行されます。

| Event Type | 説明 |
|---|---|
| Come | 呼び鈴を鳴らしたプレイヤーのもとへ向かいます |
| GoTo | Destinationに設定した場所へ向かいます |
| Move | 現在向いている方向へ歩き始めます |
Come:こちらへ呼び寄せる
呼び鈴を鳴らしたプレイヤーのもとへ、精霊馬・精霊牛を呼び寄せます。
精霊馬・精霊牛はプレイヤーの方向へ旋回しながら近づき、一定距離まで近づくと自動で停止します。
デフォルトではこの設定になっています。
GoTo:指定した場所へ歩かせる
あらかじめ設定した場所へ精霊馬・精霊牛を歩かせることができます。
まず、Hierarchyで空のGameObjectなどを作成し、精霊馬・精霊牛を到着させたい場所へ配置します。

次に、精霊馬・精霊牛のTokotoko Walker (Script)にあるDestinationへ、そのGameObjectのTransformを設定してください。

呼び鈴のEvent TypeをGoToに設定してInteractすると、Targetsに登録した精霊馬・精霊牛がDestinationへ向かって歩き、目的地の近くまで到着すると自動的に停止します。
Move:前方へ歩かせる
精霊馬・精霊牛が、現在向いている方向へ歩き出します。
停止させる場合は、精霊馬・精霊牛を直接Interactしてください。
公開メソッドを使って別のギミックと連携する
「とことこ精霊馬」のTokotokoWalkerには、ほかのUdonSharpギミックから呼び出せる公開メソッドが用意されています。
そのため、付属の呼び鈴だけでなく、
- スイッチを押したら歩き始める
- Triggerに入ったら特定の場所へ向かう
- 別の演出が終わったらプレイヤーのもとへやってくる
といった連携も可能です。
利用できる主な公開メソッドは以下のとおりです。
| メソッド | 動作 |
|---|---|
| Move() | 現在向いている方向へ歩き始めます |
| Stop() | その場で移動を停止します |
| Come() | 設定されている対象プレイヤーのもとへ向かいます |
| GoTo() | Destinationに設定した場所へ向かいます |
プレイヤーを対象にする動作について
Come()を使用する場合は、先にSetTargetPlayerById(int playerId)で対象プレイヤーを設定します。
たとえば、ローカルプレイヤーを対象にする場合は次のように呼び出します。
Localで実行する場合
VRCPlayerApi localPlayer = Networking.LocalPlayer;
if (localPlayer == null || !localPlayer.IsValid())
{
return;
}
tokotokoWalker.SetTargetPlayerById(localPlayer.playerId);
tokotokoWalker.Come();
Globalで実行する場合
VRCPlayerApi localPlayer = Networking.LocalPlayer;
if (localPlayer == null || !localPlayer.IsValid())
{
return;
}
tokotokoWalker.SendCustomNetworkEvent(
NetworkEventTarget.All,
nameof(TokotokoWalker.SetTargetPlayerById),
localPlayer.playerId
);
tokotokoWalker.SendCustomNetworkEvent(
NetworkEventTarget.All,
nameof(TokotokoWalker.Come)
);
なお、Move()、Stop()、GoTo()のように対象プレイヤーを必要としないメソッドは、対象設定を行わずそのまま呼び出せます。
Global動作について
「とことこ精霊馬」の移動ギミックは、Network Eventを使用したGlobal動作です。
操作が行われると、現在同じインスタンスにいる各プレイヤーのクライアントで同じ移動処理が実行されます。
精霊馬・精霊牛の位置や回転そのものを同期する方式ではないため、通信状況や実行タイミングによって、プレイヤー間で位置に多少のずれが生じる場合があります。
また、途中参加したプレイヤーには、それ以前の精霊馬・精霊牛の移動状態や位置は反映されません。
お問い合わせ
不具合やご質問がありましたら、BOOTHのメッセージ機能よりご連絡ください。
狐火工房 – Kitsunebi Kobo



コメント