Skip to content
第08回 画像リソースの管理

3 / 4 表示矩形へ画像を描く

このステップの目的

画像の素材寸法とゲーム上の表示・命中範囲を分けたまま画像を差し替える

表示サイズはEntityが決める

ImageManager::Draw()は画像IDと表示矩形を受け取ります。 元画像のピクセル寸法をそのまま移動や命中判定へ使わず、GameTuning.hの表示矩形を利用します。

ImageManager.cppcpp
void ImageManager::Draw(Id id, const Rect& rect) const
{
    int handle = handles[ToIndex(id)];
    DrawExtendGraph(
        static_cast<int>(rect.x),
        static_cast<int>(rect.y),
        static_cast<int>(rect.x + rect.width),
        static_cast<int>(rect.y + rect.height),
        handle,
        TRUE);
}

画像を別の大きさへ交換しても、表示矩形と命中矩形は変えません。 見た目の調整が必要な場合はDrawRectだけを変更し、命中範囲と混ぜないようにします。

チェックリスト
  • 画像の素材寸法を命中判定へ使っていない
  • ImageManagerへ表示矩形を渡している
  • 画像差し替え後もEntityの中心と命中範囲を維持している