0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Unity][RoboCup] 3DLogPlayerを作ってみて学んだこと

Last updated at Posted at 2024-10-24

[2024/10/27]
WebGL版のビルドに対応し、GitHub Pagesに公開しました。
https://suzukinene.github.io/CrossViewWeb/

はじめに

会社員をやめ、フリーランスとして働き始めるにあたり、自分のポートフォリオとして初めてOSSに挑戦しました。

作ったもの

RoboCup シミュレーション 2Dリーグのログファイルを読み込んで試合を再現する3Dアプリを、Unityを使って開発しました。
RoboCupに参加したことはありませんが、以前から作ってみたいと思っていたものを、今回開発してみました。
「2Dリーグなのに、なんで3Dアプリ?」と興味を持たれた方、ぜひご覧いただければと思います。

CrossView_Playing_001.png

CrossView_ThirdPerson_001.png

保管場所

以下の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でインストーラを作成

※もし、参考になりそうな内容がありましたら、ぜひ。
※また、ライセンス等でポカをしでかしている箇所がありましたら、ご指摘いただけますと大変助かります。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?