VRChatでMiniGolfを作る3(障害物を置く編)
前回の記事では0からワールドを作成し、新規ホールを作成して動かすことができました。
基本的な作り方だいたい抑えたので、あとは自由に改変していけば良さそうです。
前回の記事はこちら。
とはいえこのレベルからいきなりMini Golfフルコース、18ホール分のメッシュやギミックを作るのはかなりシンドい…😅
そこで、まずはお遊び感覚で色々ホールを作ったり動かしたりしてみて、だんだんとホール作成に慣れていくのが良いと思います。今回の記事では前回作ったシンプルなホールへ、ポン置きで障害物を追加してみます。
ではやっていきましょう。
前提
- VRChatでWorldを作成しUploadしたことがある
- 前回の記事で作成したサンプルホールがある
- バージョン
- VCC
- v2.1.1
- Unity
- 2019.4.31f1
- VCC
- ゴルフ用語の説明
- ホール
- ゴルフゲームの1つのラウンド。ティーグラウンドからグリーンまでのこと
- コース
- 18ホールで1つのゲームとなる。1つのゲームをコースと言う
- カップ
- 各ホールにあるゴール地点をカップと呼ぶ。小さな縦穴。
- これを「ホール」と呼ぶこともあるが、ややこしいのでこの記事ではカップと表現する
- OpenPuttに含まれるファイルは、カップのコライダー名が「Hole」となっているので混同しやすい!注意
- ホール
ホールに障害物を作る
Mini Golfでよくある物体、カップへの道を阻むおじゃま者=障害物を置いてみましょう。
基本的には以下の2つをおさえるだけでOK。
- 障害物となる3Dモデルをホールの床に配置
- (オプション)3Dモデルからボーンなどを削除して、メッシュだけにして軽量化する
- モデルのコーンポーネントにコライダーとOpenPutt物理演算を追加
準備
3Dモデルの準備
3Dモデルは好きなものを用意しましょう。
サカバンバスピスはやや好きですね?それでやっていきます。
Boothで無料のサカバンバスピスのモデルが提供されていました。
ありがたく使わせてもらいます。
ダウンロードした中にあるsakaban.unitypackageをプロジェクトのAssetsにドロップします。
Assetsに追加されたサカバンフォルダにsakaban Prefabがあります。
このPrefabをhierarchyにドロップします。
し…死んでる…。(テクスチャが)
シェーダーが無いためです!急いで追加しましょう。
シェーダーの準備
サカバンバスピスのBoothページに、シェーダーはliltoonを使っていると書いてあります。
プロジェクトへliltoonを追加します。
liltoonもVCCへ登録可能なPackageです。
初回の記事でやったようにプロジェクトにliltoonを追加していきましょう。
lilさんのツイートにあるリンクをクリックしてVCCに登録します。
VCCアプリから、プロジェクトのManage Projectボタンを押します。
下の方にlilToonがありますので+ボタンを押して有効化します。
Unity画面に戻りますと自動でインポートが行われます。
復活!
ボーン削除ツールの準備
サカバン君はHumanoidアバターなのでボーンが入ってます。
今回は動かさず、障害物としてポン置きするだけです。
ワールド軽量化のためにボーンを削除してポーズを固定するツールSkinnedMeshBakerを使います。
ダウンロードして、SkinnedMeshBaker.unitypackageをAssetsにドロップします。
モデルをホールに配置
前回の記事で作った真っ直ぐなコースにサカバン君を配置します。
位置の変更
単に移動するだけです。
あ~
サカバンゴルフ圧倒的に良い…
でも障害物としてはちょっと頼りない…それも良い…
モデルを変形する
InspectorでScaleをちょっとイジってみましょう。
試しにカレイみたく平べったくします。
Scaleを変更。
いい感じにプレイヤーへの圧力が生まれました。
ボーンもちょっと変形してみます。
サカバン君はHumanoidアバターの3Dモデルですが、実際に動かして見た目に影響あるボーンはHead以下に接続されているbody_1~5とtailだけです。
body_1~5のボーンをUnity左上のRotateツールで回転させて、シャチホコのようなサカバンにしてみます。
うーん…正直シャチホコ化はイマイチです…
まァ、いいか🙄
モデルをポーズ付きでベイク
大体ポーズが決まりましたのでボーンを抜いて固定しましょう。
Hierarchyのsakabanを右クリックして出てきたメニューからBakedSkinedMeshPoseを実行。
Baked_sakabanというメッシュがHierarchyに生成されます。
Prefabの方は無効にします。
これでゴルフの障害物として欲しかった3Dメッシュだけの存在になります。
コライダーの設定
HierarchyのBaked_sakaban/mesh001_bodyのInspectorにMesh Coliderを追加します。
追加したMesh Colliderに物理を設定します。
- Mesh CilliderのMaterialに以下を追加
- Packages/OpenPutt/Runtime/PhysicMaterialsにあるWallPhysics
動かす
ローカルテストをVRモードで動かしてみます。
VRモードでのローカルテスト方法
Quest2+AirLinkを使ったVRモードでのローカルテストの簡単な方法
- Quest2でAirLink経由でSteamVRに入ります
- SteamVR起動しただけで、アプリはまだ起動しません
- UnityでLoaltestingでForce Non-VRのチェックを外しBuild & Testボタンを押す
- Quest2側でLocalのVRChatが起動する
VR上のOpenPuttの動作
- 右手を後ろに持っていくとパター、左手を後ろに持っていくとボールが取り出せる
- トリガーを引いた状態でパターをふる
ヨシ!ボールをぶつけるとうまく障害物として機能しました。
モデル変形のやり方次第でいくらでも応用ができます。
例えば尻尾の形状を横に伸ばてカップへの入場を阻止したり…
まぁカップ導線を厳しくすると、クソゴルフワールド化待ったなしになってしまいますが🤨
次は?
今回はサカバンバスピスの3Dモデルを障害物としてMini Golfのホールへ追加できました。
応用すれば自分の好きな3Dモデルをいくらでも配置できるでしょう!
今回の内容と手順はそう変わらないはずです。
次の記事ではホールの床面を既存の3Dモデルに置き換えてホールを作って行きます。
👉(記事作成中)
Discussion