[2024/10/27]
WebGL版のビルドに対応し、GitHub Pagesに公開しました。
https://suzukinene.github.io/CrossViewWeb/
はじめに
会社員をやめ、フリーランスとして働き始めるにあたり、自分のポートフォリオとして初めてOSSに挑戦しました。
作ったもの
RoboCup シミュレーション 2Dリーグのログファイルを読み込んで試合を再現する3Dアプリを、Unityを使って開発しました。
RoboCupに参加したことはありませんが、以前から作ってみたいと思っていたものを、今回開発してみました。
「2Dリーグなのに、なんで3Dアプリ?」と興味を持たれた方、ぜひご覧いただければと思います。
保管場所
以下のURLをご参照ください。
(releaseページに、Windows版のインストーラもあります。)
READMEに詳細を書きましたが、
Unity Asset Storeで購入したFREEの3Dモデルなどの外部データを私がGitHubで公開することはできないので、リポジトリには含めておらず、そのままではビルドできません。ご了承ください。
学んだこと
開発においては次の項目を学習し、実装に盛り込みました。
- 3DモデルにAnimationを適用する
- スクリプトからAnimation Stateを切り替える(Idle,Dash,Kickなど)
- 3Dモデルの首振り(顔の向き)をOnAnimatorIK()で制御
- ボールやプレーヤーの移動、向きの変更を滑らかに変化させる
- 自分でMeshを作って扇形のオブジェクトを足元に描画
- プレーヤーの視界(角度と距離)をスポットライトで表現
- 3DモデルのAnimator(FieldPlayerとGoalKeeper)を実行時に切替える
- UnityStandaloneFileBrowser(OSS)でファイル選択
- UnityWebRequestで、ローカルファイルまたはURLから読み込み
- DownloadHandlerScriptの活用で、受信データを逐次処理
- ログファイルのS式(S-Expression)を、主に正規表現でパース処理
- MonoBehaviour.InvokeRepeating()でタイマー処理
- プレーヤーの背番号は、UIレイヤー上にオーバーレイ表示
- 画面分割(CameraのViewPort Rect)
- 番外:InnoSetupでインストーラを作成
※もし、参考になりそうな内容がありましたら、ぜひ。
※また、ライセンス等でポカをしでかしている箇所がありましたら、ご指摘いただけますと大変助かります。
以上です。