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つの作業をするとワールドが登録されます。

  1. World Nameにワールド名を入力
  2. Upload Imageにチェック
  3. 下の方のThe above infomation ・・・にチェック
  4. Uploadボタンをクリック

 

MetaQuest2でVRChatの登録したワールドに入って動作確認します。

デバッグ時はゴーグルを着けたり外したりしないといけませんが、ちゃんと動き始めるとめっちゃ楽しいです。

開発中のワールド紹介

www.youtube.com