Appearance
第01回 プレイヤーの表示と操作
第01回から第12回まで、縦スクロールシューティングゲームを段階的に制作します。 プレイヤーを操作して弾を撃ち、画面上端から現れる敵と敵弾を避けながら得点を重ね、クリアまたはゲームオーバーまで遊べるゲームへ発展させます。
配布プロジェクト
第01回の配布プロジェクトは、DXライブラリの初期化、入力、画像管理、ゲームループを実装済みです。
配布ファイル一覧
| ファイル | 役割 |
|---|---|
| Source/Shooting/Game.cpp | ゲームループ |
| Source/Shooting/Player.h | プレイヤーの宣言 |
| Source/Shooting/Player.cpp | プレイヤーの表示、入力方向、位置更新 |
| Source/Shooting/Tuning/GameTuning.h | ゲームの調整値 |
| Source/Shooting/Input.h | シューティング内の操作を表すActionの定義 |
| Assets/Images/Player.png | プレイヤーの画像 |
この回のゴール
配布プロジェクトは実行しても黒いウィンドウが表示されるだけです。
ここにシューティングゲームに必要な機能を追加していきます。
授業終了時にはプレイヤーが表示され、矢印キーまたはWASDで移動できるようになります。
- プレイヤー画像を開始位置へ表示し、キー入力で移動させる
Game::Run()に実装された基本的なゲームループの仕組みを理解するMoveSpeedを変更し、プレイヤーの移動速度を調整する
| 操作 | 結果 |
|---|---|
| 左右キーまたはA・D | プレイヤーが左右へ移動する |
| 上下キーまたはW・S | プレイヤーが上下へ移動する |
| Escape | ゲームを終了する |
今回のポイント
ゲームループの順序を確認し、プレイヤーの表示と操作をPlayerの責任として追加します。
1 / 4プロジェクトの準備作業の基点となるプロジェクトを展開し、今回編集するファイルを確認する2 / 4ゲームループの基本
Game::Run()に実装された基本的なゲームループを理解する3 / 4プレイヤーの位置と表示の実装プレイヤー位置をリセットし、画像を描画する4 / 4入力とプレイヤーの移動入力から移動方向を作り、速度と1フレーム分の時間を使ってプレイヤーの位置を更新します。最後に、移動範囲を確認し、移動速度を調整します。今回実装する範囲
| 区分 | 内容 |
|---|---|
| 自分で実装する処理 | Player::Reset()、Player::Draw()、入力方向の作成、positionの更新 |
| 実装済みの機能を利用する処理 | ImageManagerによる画像の読み込みと描画機能、表示矩形の計算、斜め移動の調整、画面内への移動制限 |
第01回ではプレイヤーの表示と操作を完成させます。
画像の読み込みや細かな制御は、後の回で詳しく扱います。
今回利用する機能
この回で利用する機能のうち
- 命中範囲と移動範囲の画面内制限は第04回
- ベクトルの大きさと正規化は第05回
- 画像リソースの管理は第08回
で詳しく扱います。
今回の完成例
まず自分の実装を動かしてから、第02回の配布プロジェクトを完成例として比較します。
| 確認するファイル | 確認する内容 |
|---|---|
Player.cpp | プレイヤーの初期化、表示、入力方向、位置更新 |
Game.cpp | ゲームループからPlayerへ更新と描画を依頼する流れ |