初心者がUnreal Engine 5でPCゲームを作る Day6 ~ さよならUE、こんにちはUnity
Day6まとめ
Spine使うならUnity!
キャラを極太にした
これなら綺麗に映るだろ。行くぞUnreal!
設定でなんとかできるのかもしれないがマジで情報がない。
試しにUnityで入れてみる
もしやエンジン側の処理の問題か? と思い、UnityにSpineランタイムを導入して確認してみる。
ランタイム導入がビビるほど楽でビビる
.unitypackageファイルをダウンロード
導入したいプロジェクトを開いておく
ダブルクリックでインポート
これで終わりだ。
Spine-UEのように複雑な工程を踏む必要がない。
作例としてサンプルファイルも色々入っており(もちろんインポートしないことも選択可能)、学習の上でも楽そうだ。
もうこの時点で「Spineを一番使いやすいのはUnityだ」という予感がある。
Unity用にSpineモデルをエクスポート
Unrealと書き出し拡張子が異なる(.skel.txtとか.atlas.txtとか)。
インポートは生成されたファイルをドラッグアンドドロップ。
やっぱりUnityで開発すべきか……
Godotを使うことも考えたが、以下からやはりUnityを選定すべきと考える。
Unity Pros
Spineを扱うノウハウの蓄積
Asset Storeに2D向けアセットが大量にある
特にアセットが正規版でなくてよいプロトタイプは超高速化しそう
Godot Cons
メッチャ良いらしい独自言語がSpineランタイムで扱えない
C++での開発となる
Godotは1.5億円以上売れてもライセンスが無料という点が非常に強いが、迅速な完成が優先される。
セットアップ
Unityをいじっていたのが2021年とかなので設定を一応見直す。
エンジン本体
LTSの最新版を入れ直し。
VSCode
Omnisharp云々だけ対応した。
サンプルシーンを見てみる
サンプルシーン #4、WASD移動とクリックで発砲するモデルを参考にオリジナルのものを書いてみる。
構造読解
3つのコンポーネントにそれぞれScriptがアタッチされている。
PLAYER INPUT(スクリプトのみ)
入力関連の宣言とUpdateでの入力監視
入力があったらPLAYER Modelから対応する関数を呼び出す
入力元がFireとかJumpとか言ってるが、どこでキーバインドしているのかわからない
PLAYER Model(スクリプトのみ)
入力を受け取ってモデルにかかっているTransformやspeedをいじる
「BodyState」として現在行っている動作をVIEW Modelに伝える
VIEW Model(Spine Skeleton Animation)
PLAYER Modelから「BodyState」を受け取りアニメーションを再生
Spine側で設定したイベントに応じてサウンドやパーティクルを再生
アニメーションやイベントはReferenceAssetsフォルダに書き出してアタッチ
サウンドやパーティクルは子オブジェクトとして設定してアタッチ
ReferenceAssetsの書き出し方
アニメーション
Skeleton Data Asset > Preview
イベント
わかんね
FireとかJumpとかなんやねん→デフォルトのボタンでした。
UnityではFire1 ~ 3、JumpをデフォルトのボタンとしてString変数から呼び出せるらしい。
InputSystemを導入する
インストール
Fire1~3の方に「新しいInput Systemの使用をご検討ください」と書いてあった。UEみたくInput管理が直近で刷新されたようだ。
アクションマップの設定
ここから諸々設定。
_rigidbody て何
フィールド(インスペクターから値を入れられるやつ)は_から始めるという暗黙の了解があるらしい。
一時停止入れるならUpdateに注意
キーバインド見てて「そういや一時停止ってどうすんねん」と思って調べたらUpdateで書いたものは止まってくれない旨の記述を発見。
ゲームを一瞬止めるためにはUpdateで処理書いたらアカン模様。
コーディング基礎からかもしれない
コーディング回りはフンワリと触ったことがあるものの、詰まるところが多い予感がしている。
詰まるたびに学ぶより一括でドカッと知識を入れた方が時間の短縮になりそうなので、公式チュートリアルをやってみようと思う。
この記事が気に入ったらサポートをしてみませんか?