配布先(Booth):MiniMiniArena(ACファンゲーム) – 3Dmodel Robbit – BOOTH
ここでは自作ゲームの作り方を解説していきます
※現時点ではこのページも作成途中です
使用するゲームエンジンはUnity(2022LTS)
製作タスクリスト
- シーンを作成して土台を配置
- 操作するキャラモデルの実装、配置
- キャラクタのアニメーション設定
- キャラクタのステートマシン設定
- 当たり判定の実装
- 接触オブジェクトの破壊機能を実装
- ランダム生成するスクリプト
- 敵キャラクタのプレハブ
- スコア・タイム表示
- リザルト画面
シーンを作成して土台を配置
UnityHubを開き、プロジェクトを作成します
Unityに関してはこちら:Unity(Unity のリアルタイム開発プラットフォーム | 2D/3D、VR/AR エンジン)
今回はVer2022.3.2f1で作成します、3Dcoreのベーシックなプロジェクトを選択しました
プロジェクトが準備できて、最初にCubeで土台を作ったのがこちら
CubeはX:10、Z:10にサイズを変更して、Y軸に-0.5移動します
MainCameraは平行投影(Orthographic)へ変更しておきます
操作するキャラのモデル実装、配置
Assetの中にモデルデータ(FBX、テクスチャと合わせて)をドロップ
マテリアルを確認して配置を調整します、今回は画面左下くらいに置いてみました
キャラクタのアニメーション設定
キャラクタにはアニメーションコントローラーをアタッチしてモーションをとれるようにします
モーションはblenderで作成しているのでfbxモデル内にアクションとして格納されています
blade_Action_Aとidle(待機)を用意しました
ここでモーション内にイベントトリガーを設定してスクリプトでタイミングを読み取れるようにしておきます
モデルのアニメーションはfbxデータを選択するとinspectorにて確認できます(シーン上ではなく、フォルダのモデルを選択)
ブレードが出たタイミングと終わったタイミングにそれぞれcolliderStart、colliderEndという名前で追加しました
25フレームのアニメーションに対して12フレーム目にcolliderStartを追加
colliderEndは18フレーム目に追加しました
ここではスクリプトはVisualScriptを使用するのでアニメーターのパラメータはbool型でbladeとidleとして設定しています
次にアニメーションを再生するためのステートマシンを作ります
キャラクタのステートマシン設定
621のモデルにステートマシンをアタッチ
まずはブレードを振ってオブジェクトとの当たり判定が確認できるところを目指します
ステートは待機とブレードの2つを作ります、待機状態でキー入力されたらブレードステートへ
ブレードステートから一定時間後に待機状態へ戻る仕組みとしています
startステートの中身は以下のように設定、bool型の変数を使うのでステートに入るときにon、出るときにoff
こうすることでステート別でboolの制御が可能になり、offにし忘れることがなくなります
初期値はidle(待機モーション)です
次にもう一つのステートです、こちらではブレードを降らせるのでbool変数はbladeを指定
一定時間(1sec)後にモーションを終了させたいのでタイマーノードを繋げてカスタムイベントを繋げます
これでトリガーの準備ができたので最後にトランジションを設定します
idleからblade(左側)の中身は以下です
スペースキーが押されると遷移するように組んでいます
当たり判定の実装
当たり判定、コリジョンを設定していきます
今回の仕様ではキャラクタ(自機)はダメージを受けないので攻撃判定であるブレード時にコライダーを設定します
通常は非表示にしておき、ブレ―ドの出始めから終わり際にかけて発生するようにします、タイミングはアニメーションからフラグを受け取って制御
接触オブジェクトの破壊機能を実装
当たり判定がとれるようになったので破壊(Destory)機能を実装します
破壊をするだけであれば以下のようなノードを繋げます
ブレードのコリジョンをトリガーとして認識させ破壊するノードを組みました
これで実行し、ブレードが当たり判定に入ると破壊ノードが実行され消えます
ランダム生成するスクリプト
生成するエリアを設定し、範囲内からランダムに座標を取得
敵キャラクタのプレハブ
呼び出しできるようにプレハブを作ります
スコア・タイム表示