※本記事にはサンプルコードはありません
前回の(準備編)に続き、今回は実装編1となります。
今回から実装編になりますが、記事の最初に注意書きしている通り、当ブログではサンプルコードなどは基本的に書きません。
コーディングに関しては僕より優秀なエンジニアさんのブログなどで正しいやり方を学んだ方が絶対に良いです。
それでは本題に入ります。
1、どのシーンから作り始めるか
今回はゲームが単純なので、実際に遊べるシーンから作り始めます。
ボールの動きはおそらく難しくないので、先にユニティちゃんの動きをコントロールするところから始めました。
3Dモデルとボイス素材はそのまま使えますが、動きだけはバスケットっぽい動きが同梱されていなかったので、それっぽい動きのアセットを探しました。
そこでたどり着いたのが「Huge FBX Mocap Library part 1」です。
サムネイルで既にバスケットのシュートしてる動きが見えてるし、無料だし、まさに願ったり叶ったりの最高のアセットです
後々対処したことですが、このアセットはとても豊富にモーションデータが入っているので容量がとんでもなく大きいので、使わないモーションはインポート時に外しておくか、あとから削除するかしておいたほうが良いかと思います
2、ユニティちゃんにモーションをつける
早速インポートしたモーションをユニティちゃんにセットします。
厳密には、ユニティちゃんオリジナルのモーションと組み合わせました。
必要そうなモーションをあらかじめ整理しておくと、モーションロジックを組み立てやすいと思います。
今回は下記のパターンを作ることにしました。
・何もしない(アイドル状態)
・構え
・シュートする
この状態にロジックを組んで、モーション遷移するようにしました。
ロジックもなるべくシンプルにします。
何も操作しなければ「アイドル状態」
↓
タップしている間は「構え」
↓
タップを離すと「シュート」
↓
シュートモーションが終わったらアイドル状態に戻る
これで問題はなさそうです。
操作(タップ)でどう切り替わるかをこの時点である程度決めておくと、スクリプトを組む際に整理しやすいですね。
3、モーションに関するスクリプトを組む
モーション遷移を決めたらスクリプトを組みます。
「タップ」という操作はこのゲームの基本部分ですし、きっと他のコーディングでも参照したくなることが多そうなので、ゲーム全体を管理できそうな「GameController」というスクリプトファイルを作ってコーディングしました。
あとはHierarchyの中にも「GameController」という空オブジェクトを作って、GameControllerスクリプトをアタッチしてあげれば、どこからでも参照しやすいスクリプトとして有意義に使えます。
ユニティちゃん用のAnimatorを組んで、そこにスクリプトをアタッチしてTransitionなどを正しく設定するだけでユニティちゃんは思ったように動いてくれました。
Unityは簡単ですね~
4、背景を組んで立ち位置を決める
ネット上でイイ感じのバスケットコートの3Dモデルデータを見つけて、作者さんの許可もすんなりいただけたので、早い段階でシーンの中に配置しました。
今回はカメラがグリグリ動いたりはしない予定なので、最初からある程度の立ち位置とカメラアングルを固定させてしまっても全く問題ないです。
というより、画面全体の構図を決めないとボールの軌道が決められなかったです。
あと、コート外の風景もイイ感じのアセットを使って街の中っぽい感じにしたのですが、この時点では後のことを考えずにドカッとモデルを置いたら、まぁ重いのなんの。。。
とりあえずUnity上では普通に再生できていますが、後で実機確認をした際にこの背景モデルがいろんな問題を抱えていることに気がつき、後々対処することになりました。
まぁその話はあとで出てきます。
次回は「実装編2」です
前回の(準備編)に続き、今回は実装編1となります。
今回から実装編になりますが、記事の最初に注意書きしている通り、当ブログではサンプルコードなどは基本的に書きません。
コーディングに関しては僕より優秀なエンジニアさんのブログなどで正しいやり方を学んだ方が絶対に良いです。
それでは本題に入ります。
1、どのシーンから作り始めるか
今回はゲームが単純なので、実際に遊べるシーンから作り始めます。
ボールの動きはおそらく難しくないので、先にユニティちゃんの動きをコントロールするところから始めました。
3Dモデルとボイス素材はそのまま使えますが、動きだけはバスケットっぽい動きが同梱されていなかったので、それっぽい動きのアセットを探しました。
そこでたどり着いたのが「Huge FBX Mocap Library part 1」です。
サムネイルで既にバスケットのシュートしてる動きが見えてるし、無料だし、まさに願ったり叶ったりの最高のアセットです
後々対処したことですが、このアセットはとても豊富にモーションデータが入っているので容量がとんでもなく大きいので、使わないモーションはインポート時に外しておくか、あとから削除するかしておいたほうが良いかと思います
2、ユニティちゃんにモーションをつける
早速インポートしたモーションをユニティちゃんにセットします。
厳密には、ユニティちゃんオリジナルのモーションと組み合わせました。
必要そうなモーションをあらかじめ整理しておくと、モーションロジックを組み立てやすいと思います。
今回は下記のパターンを作ることにしました。
・何もしない(アイドル状態)
・構え
・シュートする
この状態にロジックを組んで、モーション遷移するようにしました。
ロジックもなるべくシンプルにします。
何も操作しなければ「アイドル状態」
↓
タップしている間は「構え」
↓
タップを離すと「シュート」
↓
シュートモーションが終わったらアイドル状態に戻る
これで問題はなさそうです。
操作(タップ)でどう切り替わるかをこの時点である程度決めておくと、スクリプトを組む際に整理しやすいですね。
3、モーションに関するスクリプトを組む
モーション遷移を決めたらスクリプトを組みます。
「タップ」という操作はこのゲームの基本部分ですし、きっと他のコーディングでも参照したくなることが多そうなので、ゲーム全体を管理できそうな「GameController」というスクリプトファイルを作ってコーディングしました。
あとはHierarchyの中にも「GameController」という空オブジェクトを作って、GameControllerスクリプトをアタッチしてあげれば、どこからでも参照しやすいスクリプトとして有意義に使えます。
ユニティちゃん用のAnimatorを組んで、そこにスクリプトをアタッチしてTransitionなどを正しく設定するだけでユニティちゃんは思ったように動いてくれました。
Unityは簡単ですね~
4、背景を組んで立ち位置を決める
ネット上でイイ感じのバスケットコートの3Dモデルデータを見つけて、作者さんの許可もすんなりいただけたので、早い段階でシーンの中に配置しました。
今回はカメラがグリグリ動いたりはしない予定なので、最初からある程度の立ち位置とカメラアングルを固定させてしまっても全く問題ないです。
というより、画面全体の構図を決めないとボールの軌道が決められなかったです。
あと、コート外の風景もイイ感じのアセットを使って街の中っぽい感じにしたのですが、この時点では後のことを考えずにドカッとモデルを置いたら、まぁ重いのなんの。。。
とりあえずUnity上では普通に再生できていますが、後で実機確認をした際にこの背景モデルがいろんな問題を抱えていることに気がつき、後々対処することになりました。
まぁその話はあとで出てきます。
次回は「実装編2」です