こんにちは。
メモ用にVRChatで実装出来るプレイヤーの身長を変更出来るボタンの作り方を書いておきます。
もくじ
UdonSharpBehaviourの作り方
- Projectタブで右クリック
- [Create] -> [U# Script]
- 名前を入れて作成 (今回はAvatarHeightChanger)
コード
AvatarHeightChanger.cs
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
[RequireComponent(typeof(Collider))]
[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
public class AvatarHeightChanger : UdonSharpBehaviour
{
[SerializeField] float height = 1.3f;
public override void Interact()
{
Networking.LocalPlayer.SetAvatarEyeHeightByMeters(height);
}
}
使い方
-
Unity上部のタブから [GameObject] -> [3D Object] -> [Cube] でCubeを作成する
コード解説
ColliderがついているGameObjectのみに使えるスクリプトって記述
(BoxColliderやMeshCollider等)
[RequireComponent(typeof(Collider))]
UdonSharp限定のAttribute。
同期しないことを記述
[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
[SerializeField] はUnityのInspectorで編集出来るようにするもの。
対応されているtypeのみ編集可能になります。他にも保存するときとかに使います。
[SerializeField]
UdonSharp限定の関数です。VRChat内でオブジェクトをインタラクトした際に呼ばれる関数です。
public override void Interact()
Networking.LocalPlayer内の、SetAvatarEyeHeightByMetersという関数を呼んで身長を変更してます。
Networking.LocalPlayerは自分自身のVRCPlayerApiクラスのインスタンスを返します
Networking.LocalPlayer.SetAvatarEyeHeightByMeters(height);