VRC Udonトランプ自動配布機能付きのコード解説 パート1
こんぱう~~~
"VRC Udonトランプ自動配布機能付き"のコードについて解説いたします。
■基本的なUdon Behaverの設定の仕方
[Add Component]からUdon Behavivourを選択。
Program SouirceをUdon C# Program Assetにして[New Program]を押下。
[Create Script]を押下。
SynchronizationをManualに変更して、Program Scriptからスクリプトファイルを開くことができます。私はVScodeを使用するように設定しています。
dealbuttonとCubeで使用しているスクリプトファイルがどんな風になっているのか説明します。
完成したスクリプトファイルをUnityで適用すると以下のようになります。
dealbutton
Cube
サンプルコード
dealbuttonのコード
Cubeのコード
usingでUdonSharpだったり必要なモノを使えるようにしています。
[SerializeField]を付けることでUnityの画面で値を入力できるようになります。
参考文献:【初心者Unity】[SerializeField]ってなに? | TECH PROjin
Gameobjectのは配列という意味になります。
[SerializeField] GameObject m_obj;
はトランプを格納するので54の大きさの配列になります。
Vector3 worldPos_start;
Quaternion worldRot_start;
Vector3 worldScale_start;
はトランプの初期の位置、角度、大きさを格納する箱です。
public float radius = 1.0f;
トランプを配るときのプレイヤーの距離を調節するためのモノです。
小さいと近くになって、大きくすると遠ざかります。
void Start () {//開始時にカードの配置を取得する
worldPos_start = m_obj[0].transform.position;
worldRot_start = m_obj[0].transform.rotation;
worldScale_start = m_obj[0].transform.lossyScale;
}
void Start()は開始時に呼び出されるところなのでここで初期値を設定しています。
public int temp(int[] x)ではトランプをシャッフルするのに使っています。
・ランダムに二枚のカードを選ぶ
・交換する
この二つの動作を10000回くりかえしてトランプを混ぜたことにしています。
public override void Interact() はこのコードを適応したモノがつかまれたときに呼び出されます。
Networking.SetOwner(Networking.LocalPlayer, m_obj[i].gameObject);//カードのオーナーリクエストを送信
これがないと誰かがトランプを掴んでしまったらトランプの位置を動かすことができません。
*1:float)sin*1.2f*radius,0.2f,(float)cos*1.2f*radius);//カードを配る