【C++】GDI描画による背景のスムーズスクロール改

前回のスクロールでプレイヤーキャラがぴょんぴょんはねる問題を改良した。

あと、障害物との当たり判定もいれてみた。

まずは動画をペタリ。
(録画ソフトとの相性の問題で画面がちらつきます。ご視聴の際はご注意ください)

やり方は前回にも少し触れたように、まず、背景専用のビットマップイメージを別に用意する。

マップチップのピクセルを背景用ビットマップに描いたのち、スクロールにあわせて位置をずらしながら、BitBlt()関数でバックバッファに送る。

その後、バックバッファからGetBitmapBits() 関数を使用して、全ピクセルのビット情報(unsigned*)を取得する。

そして、そのビット情報にキャラクターのピクセルをアルファブレンドで描いた後、最後にもう一度、BitBlt()関数で画面に送信する、というもの。

スクロールのアルゴリズムとしては、最良のものではない。

本来はカメラの概念を導入して、キャラクターに追従して背景を動かすのか、カメラを固定してキャラクターが位置を変えるのか、ゲームによって選択できるようにすべきだ。

そして、そのために描画部分のロジックは変更しないですむような設計にするのがベストだと思う。

しかし、DirectXなら当たり前のことでも、GDIでやるとなると事情はかなり違ってくる。

今回は、とりあえず自作のマップ情報を表示して歩き回れるようになるまでが目的だったので、作りについてはもっとも簡単な方法で実現した。

ひとまず目的は達成できたので、このプログラムはこれでいったん終了とする。

4年前

コメントを残す

メールアドレスが公開されることはありません。