Mashiro Player Follower

指定したプレイヤーの方向・位置へオブジェクトを追従させるコンポーネント集。次の 3 系統を含む。

構成

ファイル 役割
MashiroPlayerFollower.cs / .asset 候補一覧の管理・選択状態の同期・対象オブジェクトの回転
MashiroPlayerFollowerButtonHandler.cs / .asset 候補一覧の 1 ボタン分(プレイヤー名表示・選択色・押下処理)
MashiroPlayerNameFollower.cs / .asset DisplayName 指定で対象オブジェクトを回転させる
MashiroPlayerNameLookTarget.cs / .asset DisplayName 指定で自身の位置を移動させる
PlayerFollowerBoard.prefab MashiroPlayerFollower と UI(登録ボタン・候補一覧のスクロールビュー・対象名表示)を組み込んだボード
PlayerButton.prefab 候補一覧に生成されるボタン(MashiroPlayerFollowerButtonHandler 付き)

依存

仕様

MashiroPlayerFollower

MashiroPlayerFollowerButtonHandler

MashiroPlayerNameFollower

MashiroPlayerNameLookTarget

Inspector

MashiroPlayerFollower

フィールド 型 既定値 必須 内容
targetObject GameObject なし ○ 選択プレイヤーへ向けるオブジェクト。未設定時は回転しない
playerButtonPrefab GameObject なし ○ 候補一覧に生成するボタン。MashiroPlayerFollowerButtonHandler を持つこと
buttonParent Transform なし ○ ボタンの生成先。子はすべて再生成時に破棄される
targetObjectNameText TextMeshProUGUI なし – targetObject の名前の表示先

PlayerFollowerBoard.prefab では playerButtonPrefab(PlayerButton.prefab)・buttonParent・targetObjectNameText と、登録ボタンの Button.OnClick(RegisterSelf)が設定済み。targetObject は未設定。

MashiroPlayerFollowerButtonHandler

フィールド 型 既定値 必須 内容
buttonText TextMeshProUGUI なし – プレイヤー名の表示先
buttonImage Image なし – 選択色の適用先
normalColor Color (0, 0, 0, 1) – 非選択時の背景色
selectedColor Color (0.91, 0.35, 0, 1) – 選択時の背景色

MashiroPlayerNameFollower

フィールド 型 既定値 必須 内容
targetObject GameObject なし ○ プレイヤーへ向けるオブジェクト
targetPlayerName string 空 ○ 対象プレイヤーの DisplayName(完全一致)
targetPositionRatio float([Range(0, 1)]) 0.02 – 狙う高さ。0 = 頭、1 = 足元

MashiroPlayerNameLookTarget

フィールド 型 既定値 必須 内容
targetPlayerName string "PlayerName" ○ 対象プレイヤーの DisplayName(完全一致)
targetPositionRatio float([Range(0, 1)]) 0.35 – 追従する高さ。0 = 頭、1 = 足元
worldOffset Vector3 (0, 0.1, 0) – 補間後に加えるワールドオフセット(m)
smoothAlpha float([Range(0, 1)]) 0.25 – 平滑化係数。0 = 移動しない、1 = 即時
maxStepPerFrame float 0 – 1 フレームの最大移動距離(m)。0 = 無制限
fallbackPoint Transform なし – 対象不在時の目標点。未設定時は現在位置を維持

API リファレンス

MashiroPlayerFollower

UI へ手配線するもの:

シグネチャ 用途 呼び出し種別
void RegisterSelf() ローカルプレイヤーを候補一覧に登録する Button.OnClick から配線(SendCustomEvent)

内部連携用(配線不要):

シグネチャ 用途 呼び出し種別
void TogglePlayerSelection(VRCPlayerApi player) 指定プレイヤーの選択/選択解除を切り替えて同期する MashiroPlayerFollowerButtonHandler が呼ぶ
void OnPlayerJoined(VRCPlayerApi player) オーナーが同期を要求する VRChat が呼ぶ(内部専用)
void OnPlayerLeft(VRCPlayerApi player) オーナーが退出者を一覧から除く VRChat が呼ぶ(内部専用)
void OnDeserialization() 候補ボタンを再生成し選択表示を更新する VRChat が呼ぶ(内部専用)
void OnOwnershipTransferred(VRCPlayerApi newOwner) 新オーナーが無効なプレイヤーを一覧から除く VRChat が呼ぶ(内部専用)

MashiroPlayerFollowerButtonHandler

UI へ手配線するもの:

シグネチャ 用途 呼び出し種別
void OnButtonClick() 担当プレイヤーの選択を切り替える Button.OnClick から配線(PlayerButton.prefab で配線済み)

内部連携用(配線不要):

シグネチャ 用途 呼び出し種別
void Initialize(MashiroPlayerFollower follower, VRCPlayerApi player) 担当プレイヤーと親コンポーネントを設定する MashiroPlayerFollower が呼ぶ
void SetSelected(bool isSelected) 背景色を選択色/非選択色に切り替える MashiroPlayerFollower が呼ぶ
int PlayerId { get; } 担当プレイヤーの playerId。未設定時は -1 MashiroPlayerFollower が参照する

MashiroPlayerNameFollower

内部連携用(配線不要):

シグネチャ 用途 呼び出し種別
void _SetTargetPlayerName(string newName) 対象の DisplayName を変更して再探索する 他 Udon から呼ぶ
void _ResetRotation() 元の回転へ戻し、対象を解除する 他 Udon から呼ぶ
void OnPlayerJoined(VRCPlayerApi player) 参加者が対象名なら対象にする VRChat が呼ぶ(内部専用)
void OnPlayerLeft(VRCPlayerApi player) 対象の退出時に元の回転へ戻す VRChat が呼ぶ(内部専用)

MashiroPlayerNameLookTarget

内部連携用(配線不要):

シグネチャ 用途 呼び出し種別
void _SetTargetPlayerName(string newName) 対象の DisplayName を変更して再探索する 他 Udon から呼ぶ
void OnPlayerJoined(VRCPlayerApi player) 対象がいなければ参加者を判定する VRChat が呼ぶ(内部専用)
void OnPlayerLeft(VRCPlayerApi player) 対象の退出時に対象を解除する VRChat が呼ぶ(内部専用)

ライセンス

MIT License(リポジトリルートの LICENSE.md を参照)。


本ドキュメントは AI を用いて作成しています。不明点・記載の誤りなどありましたら、下記までお問い合わせください。