切り絵が趣味の僕がプログラムや創作物について書き溜めるブログ

絵やモデリングやプログラミングなど僕が作った物について。アニメの感想や心動かされたきっかけなどを書き溜めるブログです。Boothで3Dアバターの販売もしていますhttps://paw.booth.pm/

VRC Udonトランプ自動配布機能付きのコード解説 パート0

こんぱう~~~!!

f:id:kiriesto:20220215195945p:plain

ここではVRChatで使えるトランプを作成します。
カードを作って、手で持てるようにして、自動でカードを配ってくれるようにする。
そんな感じにトランプを作成します。

この記事の目的はプログラミングをなんとなく触ったことあるけど、U#はわからないっていうかた、どうしようしたらいいのか分からないってかたが読んでくれて少しでも手助けが出来たら嬉しいなぁと思って書いています。では、一緒に頑張っていきましょう!!(サンプルをBoothにて公開中:https://paw.booth.pm/items/3650297

 

事前準備

以下の3点をUnityにインポートしておいてください。ここでは詳しくは説明しません。

・VRCSDK3-WORLD(必須)
 (https://vrchat.com/home/download)
・UdonSharp(必須) 
 (初心者向け / Udon Sharp(U#) ダウンロード、インポート方法の詳細解説)
・CyanEmu(あると便利)
 (https://github.com/CyanLaser/CyanEmu)

トランプ自動配布機能付きの概要

用意するモノ一覧
・トランプ54枚(一枚一枚、別オブジェクトで用意する)
・シャフルボタン
 - シャフル文字を表示するモノ
 - ボタンの形
 - トランプを配るときの中心になるオブジェクト
・参加人数ボタン
 - 参加人数を表示するモノ
 - ボタンの形Part2以降に作成するコード
・シャフル用のコード
・参加人数を管理するコード

概要
参加人数が0人のときにシャッフルボタンを押すトランプを初期位置に戻す。

1-8人のときにシャッフルボタンを押すと人数に合わせてトランプを配ってくれる。
(もちろん、トランプは自動でシャッフルされている)

 

■トランプの作成と設定

54枚すべてのカードを作成して(blenderとか)、Add ComponentからBox ColliderとVRC Pickup、VRC Object Syncを入れます。Rigid bodyはVRC Pickupを入れたら一緒に入った気がします。なかったらこれも入れてください。

・VRC Object Syncwでトランプの位置が同期されるようになります。

・VRC Pickupでトランプをトリガーできるようになります。

・「Is Trigger」にチェックを入れると物理的接触がなくなります。チェックを入れてないとトランプにのれたり、歩いているとトランプにぶつかったりします。

・「Is Kinematic」にチェックを入れるとAddForceや重力の影響を受けなくなります。チェックを入れないと空間をトランプが飛んでいく原因になります。

この設定をすべてのトランプに実施します。
Shiftを押しながらすべてのオブジェクトを選択してから、設定すると全部同じ設定にできるはずです。

f:id:kiriesto:20220220152433p:plain

■シャッフルボタンについて

f:id:kiriesto:20220223191020p:plain

f:id:kiriesto:20220223185519p:plain

・buttonは空のオブジェクトでCanvasとdealbuttonまとめるためのモノです。

Canvasはdealの文字を表示するためのモノです。Canvasで文字の表示する場所をつくってTextで表示する文字を設定しています。

・dealbuttonは黄色の直方体です。ボタンを押したらトランプを配るようにプログラミングしています。(プログラミングの内容については次回以降に詳しく説明します。)

dealbuttonにはBox ColliderとUdon Behavivourを追加します。

Udon Behavivourは自作したコードを使用するためのものです。
Udon BehavivourのSynchonization MethodをManualにします。
・Continuousは連続同期
・Manualは手動同期

f:id:kiriesto:20220223191806p:plain

■参加人数ボタンについて

f:id:kiriesto:20220223200751p:plain

f:id:kiriesto:20220223201513p:plain

・numは空のオブジェクトでCanvasとCubeまとめるためのモノです。

Canvasで参加人数を表示しています。

・Cubeで参加人数の加算処理を行っています。Cubeを押したらCanvasに変更した参加人数を表示するようにしています。(プログラミングの内容については次回以降に詳しく説明します。)

Box ColliderとUdon Behavivourを追加します。

Udon BehavivourのSynchonization MethodをManualにします。

f:id:kiriesto:20220223202340p:plain

■トランプを配るときの中心になるオブジェクト

playCardCenterという名前で空のオブジェクトを作成します。

 

これでコードを書くための準備ができました。

次回からどんな処理を行っているのか解説していきます。
本日はお疲れさまでした!!

 

いい夢を~~~~