VRChatのワールド作成に初挑戦
VRChatで遊んでいると作りたくなってしまうのが技術屋の性。。
ということでUnityを使ってワールド作成に初挑戦してみました。
しかし、Unity自体の知識が乏しいので、グーグル先生にご教示を頂きながら(笑)まずは箱庭を作って、簡単なオブジェクトを置いて動かしてみることにしました。
なお、VRChatで動かすために下記機能を使用してます。
-
VRChat SDK3
-
VRChat Udon
配置したい物
- ミラー(自分のアバターを鑑賞できる!)
- 掴めて投げられるボール(ストレス発散?)
- 玉転がし用のボール(みんなで遊べそう)
- お立ち台(表現が古い?)
ということでざっと配置してみましたが、真っ白な世界だと不安な気持ちになったため、適当なテクスチャをアセットストアからダウンロードして貼りました。
ミラーを設置
ミラー用のPlaneオブジェクトを設置して、InspectorにVRC Mirror Reflectionコンポーネントを追加します。
掴めて投げられるボール
適当なサイズのSphereオブジェクトを配置し、掴めるようにするためVRC Pickupコンポーネントを追加します。腕をボールに近づけ、コントローラのトリガを握ることでボールを握ることができるようになります。そして、腕を降りながらトリガを離すと投げるころができます。
玉転がし用のボール
アバター程度の大きさのSphereオブジェクトを配置し、Udon Behaviour (Script)コンポーネントを追加します。Sphere Colliderが2つ設定されていますが、1つ目はボールと同じサイズ、2つ目はボールより少し大きめのサイズに指定してます。
これは、1つ目だけだと、アバターとボールの衝突判定前にアバターがボールの上に乗ってしまうため(これはこれで面白いんですけど)、2つ目の少しボールから離れたところで衝突判定し、アバターがボールに乗っかる前にボールを先に前に飛ばしています。
アバターとボールが衝突した時の挙動はUdon Behaviour (Script)のSphereTriggerスクリプトに記述します。
下記コードでは、衝突時にアバター(プレイヤー)の速度ベクトルを取得し、アバターの速度ベクトルを1.1倍してボールに力を加えます。勢いよく飛ばしたい場合は、この倍率を大きくすればボールはぶっ飛びます(笑)。
お立ち台
これはCubeオブジェクトを置いているだけなので、説明不要かと。。
VRChatワールドに登録
VRChat SDKタブからShow Control Panelを選択してコントロールパネルを表示する。
MetaQuest2用のワールドであれば、Build&Publish for Androidボタンをクリックしてビルドを行います。
無事にビルドが完了すると下記画面が表示され、4つの作業をするとワールドが登録されます。
- World Nameにワールド名を入力
- Upload Imageにチェック
- 下の方のThe above infomation ・・・にチェック
- Uploadボタンをクリック
MetaQuest2でVRChatの登録したワールドに入って動作確認します。
デバッグ時はゴーグルを着けたり外したりしないといけませんが、ちゃんと動き始めるとめっちゃ楽しいです。
開発中のワールド紹介