登り坂の移動の仕様とゲームプレイの準備(巫女&築城&防衛アクション)
ユニットが登り坂を移動するあたりの仕様を確認するのと、そろそろ通しプレイを意識した実装予定を決めます。
仕様の確認
ユニットの登り坂の移動について
登り坂としては、
- 土による斜面 (26 deg, 45 deg)
- 階段系(26 deg, 45 deg)
- 石垣 (60 deg)
があります。
懸念していることは、真上からの見下ろし視点だと 2D 描画ユニットが 3D 描画の登り坂にめり込むことと、登っているときに移動速度を遅くしたいことです。
2D 描画ユニットがめり込むのは、あきらめて後でまた考えます。
登っているときの速度低下の実装は、
- 移動方向の 1 Unity Unit 先の高さと現在位置の高さから移動速度を下げる。
でいいかなと思いました。
ユニットの数が 100 未満なら問題なさそうですが、数百、数千になったらどうなんだろう? とは思います。敵の数はまた後で検討します。
とりあえず、高低差による速度減速の関数を定義したら適用しみます。
通しプレイのために実装すること
私は通してプレイできるようになった状態を「完成した!」と言い切って「いつでもリリースできるけど、このあたり気になるから機能追加するか」みたいな気分で開発するのが好きです。「未実装なのはオッケーだが不具合は理解してつぶす」という開発スタイルも好きです。
そして今回も完成したものとして扱うために、ゲームオーバーと新規ゲーム開始まわりの機能追加をまずやります。とはいえ最初は最低限の実装でいいので、
- 新規ゲームが開始されたら拠点がフィールドに自動で建築される。
- 本当はプレイヤーが場所を選んで建築指示する。
- 敵が拠点に触れたらダメージを受けて耐久値がなくなったらゲームオーバーにする。
- 本当は敵の攻撃まわりとか、いろいろやる。
くらいにしようと思います。
キー操作の仮決め
XBox コントローラについては決めていたのですが、キーボードとマウスでの操作も併記しました。(キー / XBox コントローラ割り振り)
共通
- ESC キー / Menu ... システムメニュー
- ホイール / Change View ... 通常サイズ、全体サイズの拡大縮小
- R キー長押し / L stick 押下 ... 拠点までワープ
- SHIFT + TAB キー, TAB キー / LB, RB ... タブを切り替える。
- F キー / パッド上 ... 部隊パネル
- C キー / パッド左 ... 装備パネル
E キー / パッド下 ... 建築パネル(建築モードのみ)
Space キー / A ... 決定
- ESC キー / B ... 閉じる
建築フェーズ
- WASD キー / L stick ... カメラ位置の移動
Q キー / R stick 押下 ... 建物や壁のピック
R キー / X ... 選択している建物や壁の回転
- Z キー, DEL キー / Y ... カーソルをあわせている建物や壁の削除
- マウス操作で行う / LT, RT ... サブ的な切り替え操作
防衛フェーズ(アクション)
- WASD キー / L stick ... 移動
マウス操作で行う / R stick ... エイム(基本オートで操作があればそれを優先する)
左クリック / RT ... 攻撃
- 右クリック / LB ... スキル
- Space キー / LT ... ダッシュ
TAB キー, 1 キー, 2 キー / RB ... 武器の切り替え(近接武器と遠距離武器)
E キー長押し / A 長押し ... インタラクト(門の開閉など)
- R キー / X ... 随伴兵の攻撃と防衛の切り替え
実際にプレイできるようになったら、また調整していきます。
やったこと
新規ゲームまわりの実装に着手しました。
新規ゲーム時の動作
小難しい実装にしたくないので、ゲーム開始前のステージ選択のシーンで「開始」したときに そのマップデータのセーブデータを作り、それをゲームのシーンで読み込むことにします。
そして、新規に始めたかどうかは「この座標の建物が拠点」という情報がセーブされてるかで判別して処理を分けることにしました。コードにすると、こんな感じですね。
SaveData.Load(path, _field);
ChangeGamePhase(_field.BaseBuilding ? GameStates.BuildPhase : GameStates.FirstPlace);
よいです。
そして、もう少し実装して動作するようにしました。
↓ 最初の建物が自動で建築された様子
よいです。
ゲームオーバーの動作
ゲームオーバーのためには敵の移動とか防衛フェーズへの遷移とかも実装が必要になるので、今回は仮 UI だけ作成します。
↓ しました
大変よいです。
ゲームオーバーになるための「建築フェーズから防衛フェーズへのボタン操作まわり」「防衛フェーズで敵が移動してゲームオーバーになるあたり」は次回以降にやります。
まとめと今後の予定
いくつかの仕様を確認して、ゲーム開始時の仮実装とゲームオーバーになったときの UI 作成を行いました。大変よいです。
次回は今回の続きか、建物の建設まわりか、操作キャラの移動まわりの試作を行おうと思います。がんばります。