
VRChat内でキャラクターに応援されながら、腕立て伏せ・スクワットができるワールド。
VRChat
Unity / UdonSharp
ステートマシン
クラス設計
Maker Faire
プラットフォーム
VRChat(Unity / UdonSharpベースのワールド開発)
入力
ヘッドセットの位置情報のみ(コントローラーやセンサーの追加不要)
担当領域
企画からステートマシン設計、クラス設計、Unityでの実装まで、ほぼすべての工程
公開・発表
2022年11月にTwitterで公開・発表、Ogaki Mini Maker Faire 2022に出展
コロナ禍以降、自宅での運動不足解消やVR上でのフィットネス体験へのニーズが高まる中、「一人で黙々と筋トレするのはモチベーションが続かない」という課題に着目。VRChat上に、正しいフォームをアバターと一緒に確認しながら、応援を受けて楽しく続けられる筋トレワールドを作ることを目指した。
技術的な核心は、コントローラーやセンサーを追加せず、VRChat標準のヘッドセット位置情報(headData.position.y)だけでスクワット・腕立て伏せの回数を検知するという制約下でのインタラクション設計。頭の高さをリアルタイムでトラッキングし、しゃがんだ/沈んだ回数として正確にカウントする必要があった。
制約:追加デバイスなし — 回数はすべて頭の高さだけで数える。
「あいらぼ*(ailab*)」チームでの開発だが、企画からステートマシン設計、クラス設計、Unityでの実装まで、ほぼすべての工程を自身が担当した。
隣のアバターを真似しながら、応援を受けて続けられる筋トレワールドという企画。
4つのゲーム状態と、状態を遷移させるイベントを設計。
共有のゲームステータスを見て、各クラスが自律的に動く小さなクラス構成を設計。
腕立て伏せ用・スクワット用など複数レーンを持つワールドを実装。
プラットフォーム
VRChat:Unity / UdonSharpベースのワールド開発。
入力
コントローラーなど追加デバイス不要。プレイヤーの頭部トラッキングデータ(headData.position.y)のみで動作を検知する。
状態管理設計
GameStatusとして GameStart → TrainingStart → TrainingEnd → GameEnd の4状態を定義し、「マットに乗る/離れる」「Startボタン押下」「目標回数到達」「EXITボタン押下」といったイベントで状態遷移するステートマシンを設計。
ゲームは小さなクラスに分割し、各クラスが共有のゲームステータスを見て自律的に動作する:
GameManagement
ゲームの進行・ステータス管理
MatON
マットの乗降検知
PlayerUI
画面表示・ボタン操作
Counter
回数カウント
SoundSystem
BGM・応援音声
CalorieCount
カロリー表示
Mirror
鏡の設定切り替え
ゲームフィールドは腕立て伏せ用・スクワット用など複数レーンを用意し、各プレイヤーが個別にマットに乗ってプレイできる設計。
一般公開
2022年11月、Twitterで一般公開・発表。VRChat内で誰でもプレイ可能なワールドとして公開した。
Ogaki Mini Maker Faire 2022
Ogaki Mini Maker Faire 2022に出展。
コンセプトへの反応
「隣のアバターを真似すれば正しいフォームで筋トレできる」というコンセプトが反応を得た。