竹林ソフト 2024/09/04 20:00

登り坂の移動の仕様とゲームプレイの準備(巫女&築城&防衛アクション)

ユニットが登り坂を移動するあたりの仕様を確認するのと、そろそろ通しプレイを意識した実装予定を決めます。

仕様の確認

ユニットの登り坂の移動について

登り坂としては、

  • 土による斜面 (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 作成を行いました。大変よいです。

次回は今回の続きか、建物の建設まわりか、操作キャラの移動まわりの試作を行おうと思います。がんばります。

月別アーカイブ

限定特典から探す

記事を検索