Skip to content
第14回 調整できるプレイヤー表示と操作

2 / 4 表示矩形と当たり判定の分離

このステップの目的

プレイヤー画像の表示領域(DrawRect)と接触判定に用いる命中領域(Hitbox)を独立した調整値として定義し、素材寸法に依存しない柔軟な設計を実現します。

GameTuning.h への調整パラメータ集約

ゲームの手触りや見た目のサイズ感、移動速度といった値は、テストプレイを重ねながら頻繁に変更するパラメータです。
これらの調整値を Player.cpp などのロジック内に直接書き込むと、調整のたびにコードを検索して修正する必要があり、作業効率が低下します。

そこで、すべての調整用パラメータを Source/Platformer/Tuning/GameTuning.h に一元管理します。

GameTuning.hcpp
namespace dxgame::platformer::tuning::player
{
    // プレイヤーの画像表示領域(幅32、高さ48、中心から上へ8ピクセルオフセット)
    inline constexpr Rect DrawRect =
        Rect::Centered(32.0f, 48.0f).MovedBy({ 0.0f, -8.0f });

    // プレイヤーの命中判定領域(幅24、高さ30)
    inline constexpr Rect Hitbox = Rect::Centered(24.0f, 30.0f);

    // プレイヤーの水平移動速度(ピクセル/秒)
    inline constexpr float MoveSpeed = 240.0f;
}

DrawRect と Hitbox の設計意図

ここで定義されている2つの矩形には、アクションゲームならではの役割分担があります。

  1. 表示矩形(DrawRect:幅32、高さ48):
    キャラクターの頭先から足先までを描画するためのサイズです。中心から -8.0f(上方向)へオフセットさせることで、キャラクターの足元と中心点のバランスを視覚的に調整しています。
  2. 命中矩形(Hitbox:幅24、高さ30):
    敵やトゲトラップ、足場のブロックと接触したかどうかを判定するためのサイズです。表示矩形よりも一回り小さく設計されています。

当たり判定を一回り小さくする理由

当たり判定をキャラクター画像の最外端(髪の毛や衣服の端など)まで広げてしまうと、プレイヤーの視点からは「触れていないように見えるのに接触した」と感じられ、操作感が損なわれます。

当たり判定をキャラクターのコア部分に絞り込むことで、見た目と判定の乖離を防ぎ、納得感のある判定処理を実現できます。

チェックリスト
  • GameTuning.h に表示矩形、命中矩形、移動速度が一元管理されている
  • 表示矩形(DrawRect)と命中矩形(Hitbox)が異なるサイズで定義されている理由を説明できる
  • 当たり判定を表示矩形より一回り小さく設定する設計上の理由を理解している
  • 素材の画像解像度を変更しても、ゲーム内の表示サイズや判定サイズが影響を受けない構造になっている

ゲームプログラミング実践