VRChatでMiniGolfワールドを作る2(ホール作成編)
前回の記事の続きです。
今回は新規にUnityでシーンを作成してMini Golfのホールを作成していきましょう。
前回の記事はこちら。
前提
- VRChatでWorldを作成しUploadしたことがある
-
前回の記事にてプロジェクト設定完了済み
- 各種Package、Assetを導入しておいてください
- バージョン
- VCC
- v2.1.1
- Unity
- 2019.4.31f1
- VCC
- ゴルフ用語の説明
- ホール
- ゴルフゲームの1つのラウンド。ティーグラウンドからグリーンまでのこと
- コース
- 18ホールで1つのゲームとなる。1つのゲームをコースと言う
- カップ
- 各ホールにあるゴール地点をカップと呼ぶ。小さな縦穴。
- これを「ホール」と呼ぶこともあるが、ややこしいのでこの記事ではカップと表現する
- OpenPuttに含まれるファイルは、カップのコライダー名が「Hole」となっているので混同しやすい!注意
- ホール
簡単なホールを作る
基本的にOpenPutt公式の手順Adding Courses通り。
ワールドを作成
まずシンプルなワールドを作成し、問題なくビルドとテストができるかを確認します。
シーンと床、スポーン地点だけ作り、ビルドとテストを行います。
Unityでの作業となります。
-
プロジェクトウィンドのAssetsで右クリック、新しいシーンを作成
- 適当に名前を付けておく(mainとか)
- 適当に名前を付けておく(mainとか)
-
作成したシーンをダブルクリックで開く
-
Hierarchy右クリック>3Dオブジェクト>Planeで床オブジェクトを追加
- 適当に名前を付けておく(Grandとか)
- プロジェクトウィンドでVRCWorldで検索し、出てきたPrefabをHierarchy直下に追加
- 検索対象をAllにする必要がある
- メニューバーからVRChat SDKを立ち上げ、ログインする
- VRChat SDKのBuilderタブを開き、Local TestingのBuild & Testボタンを押します
- ローカル起動でVRchatが起動します
World作成完了。ザ・シンプルワールド🌍
OpenPutt本体の追加
Mini Golf システム本体をHierarchyに追加します。
- OpenPuttをHierarchyに追加
- Packages/OpenPutt/Runtime/Prefabs以下にOpenPutt.prefabがある
- TMP Importer画面が出るのでImportする
シーンに説明用ボードなどが設置されます。
ホールの作成
Mini Golfゲームには通常、複数のホールが含まれます。
普通のゴルフで言う18ホールとかそういうやつです。
今回はまず試しに1つのホール作ってみます。
ホールを作るにはホール形状のメッシュ(3Dデータ)が必要です。
今回メッシュのモデリングはせずに、前回の記事で動かしたデモシーンに含まれているメッシュを流用してやってみます。
- ホールのPrefabをシステムに追加
- Packages/OpenPutt/Runtime/Prefabs/ComponentsにあるOpenPuttCourse.prefab
- これをHierarchyのOpenPutt/Holes以下に追加
- デモシーンで使っていたホールのオブジェクト(Hole1)を配置
- Packages/OpenPutt/Runtime/DemoScene以下にHole1がある
- Hierarchy直下に配置
- 体裁を整える
- 床(Grand)のスケールを大きくする
- Hole1の向きが逆なのでInspectorでRotation Y 180を設定
- ホールに芝のような色をつけるマテリアルを設定
- Hierarchy : Hole1/Hole1Walls/Hole1Floorへマテリアル設定する
- マテリアルはPackages/OpenPutt/runtime/DemoScene以下にCourceSourfaceがある
- Hole1に含まれるCylinderは使わないのでオブジェクトを無効化する
- Hierarchy : Hole1/CylinderのInspectorでオブジェクトのチェックを外す
- ホール開始位置を設定
- HoleStartPadをHole1メッシュの適当な開始地点に移動
- HierarchyのOpenPutt/Holes/OpenPuttCourse以下にHoleStartPadあり
- HoleStartPadはmissing Prefabとなっているけど無視してOKです
- ホールのメッシュより上になるようにしてください
- 開始位置がホールにめり込んでると、パターで打った後虚無に落ちます…
- HoleStartPadをHole1メッシュの適当な開始地点に移動
オブジェクトの位置微調整について
シーンビューでオブジェクトは三方向の矢印を操作して位置を移動できます。
位置の微調整するときには以下の小技が有効です。
- 調整したいオブジェクトをHierarchy上でダブルクリックすると画面中央に見やすく表示される
- 表示を透視投影から平行投影に切り替えて、真上、真横の表示に切り替えて移動させる
投影方法や真上、真横などのシーンビューの見え方の切り替え操作は以下の記事を参考にしてください。
- カップにゴール判定を設定
- HoleをHole1メッシュの穴あたりに移動
- Hierarchy : OpenPutt/Holes/OpenPuttCourse以下にHoleあり
- 穴のフチにピッタリだとゴール判定甘くなりそうなので
- フチから若干下目に配置すると良いかも
- HoleをHole1メッシュの穴あたりに移動
ホールの設定
ホールの外にボールが飛び出たらやり直し(OB判定)になります。
そのためホールに有効範囲設定が必要です。
- ホールの有効範囲となるメッシュを指定
- OpenPuttCourseのInspectorにてFloorObjectsの値を変更
- Hierarchy : OpenPutt/Holes/OpenPuttCourse
- Sizeを1に変更
- ホールのメッシュを指定する(Hole1Floor)
- OpenPuttCourseのInspectorにてFloorObjectsの値を変更
- ホールのスコアの設定
- OpenPuttCourseのInspectorにFloorObjectsの値を変更
- Hierarchy : OpenPutt/Holes/OpenPuttCourse
- Par Scoreにホールのパー値(目標打数)を設定(2とか)
- Max Scoreにホールの最大打数を設定
- プレイヤーが最大打数を超えると強制的にそのホールは終了
- OpenPuttCourseのInspectorにFloorObjectsの値を変更
- ホールのコライダー設定
- ホールのメッシュHole1にはコライダーが入ってないのでMesh Colliderを入れます
- Hole1FloorのInspectorでAddComponentからMesh Colliderを追加する
- Hierarchy : Hole1/Hole1Walls 以下にあり
- Hole1WallsのInspectorでAddComponentからMesh Colliderを追加する
- Hierarchy : Hole1以下にあり
- コライダー物理の設定
- ホール上のボールへ物理演算を効かせる設定
- 物理演算設定ファイルはPackages/OpenPutt/Runtime/PhysicMaterialsにあり
- Hole1FloorのInspector : Mesh ColiderのMaterialにFloorPhysicsを追加
- Hole1WallsのInspector : Mesh ColliderのmaterialにWallPhysicsを追加
- 物理演算用ファイルが前者と後者で違うので注意
これで1つのホールが完成です⛳
システムへホールを登録
最後に作ったホールをOpenPuttシステムに登録します。
- OpenPuttに作ったホールを登録
- Hierarchy/OpenPuttのInspector : Coursesパラメータ
- Sizeを1に変更
- Element 0 にHierarchyのOpenPuttCourseを設定
- Hierarchy/OpenPuttのInspector : Coursesパラメータ
作ったホールを試す
ローカルテストをVRモードで動かしてみます。
VRモードでのローカルテスト方法
Quest2+AirLinkを使ったVRモードでのローカルテストの簡単な方法
- Quest2でAirLink経由でSteamVRに入ります
- SteamVR起動しただけで、アプリはまだ起動しません
- UnityでLoaltestingでForce Non-VRのチェックを外しBuild & Testボタンを押す
- Quest2側でLocalのVRChatが起動する
VR上のOpenPuttの動作
- 右手を後ろに持っていくとパター、左手を後ろに持っていくとボールが取り出せる
- トリガーを引いた状態でパターをふる
ボールが壁に跳ね返っています。壁の物理演算も上手くいってるみたいですね。
これで基本的なホールの作り方はOKそうです。
あとは同じ感じで各ホールのメッシュを用意して、それぞれシステムに登録すればオリジナルコースのワールドが完成です。
なんとなくいけそうな感じがしてきました😎
次は?
実はホールのメッシュをモデリングして用意しなくても、Boothで売られているサカバンバスピスとか適当な3Dモデルを使ってもホールは作れます(!)
次の記事ではBoothモデルを使って、マジ適当なホールを作ってみましょう。
Discussion