MSX 当たり判定
当たり判定はゲームプログラミングで大事な要素
前回記事まででだいぶZ80のプログラミングっぽくなってきました。
今回は「当たり判定」についてです。
前回記事までにいろんなことを説明してきましたが、ほぼその集大成になります。(あとは応用です)
当たり判定は基本的には「特定の座標内に他のキャラクター(やスプライト)が存在していたら"当たってる"と判定する仕組み」のことです。
シューティングゲームとかで弾を撃つ。その弾が敵キャラに当たる。
アクションゲームで動く。壁に当たったら動けない。
など、この「当たってる当たっていない」を判定するのが「当たり判定」と呼ばれるものになります。
今回もたくさん伝えたいことがあるので、GitHubでのソースコードのみとなります。今回からsample008になります。
https://github.com/sailorman-msx/games/tree/main/src/sample008
予習:ここを読んでおいたほうがいいかもよ
前回の記事でワークテーブルの考え方について解説しました。
今回のソースでもワークテーブルを活用しています。
重要なのはMovePlayer(sprite.asm)、GetVRAM4x4(vram.asm)です。
ワークテーブルとして
WK_PLAYERMOVE_TBL
WK_VRAM4X4_TBL
というものを追加しています。(initialize.asm)
これらは今回の処理でとても重要です。
そのなかでもWK_VRAM4X4_TBLにいたっては当たり判定でかなり重要な意味を持ちます。
処理概要:ゲームっぽくなりつつある
画面上に白いブロックを配置しました。
このブロックに「当たった」と判定する仕組みを今回追加しています。
移動先に白いブロックがあると移動できない。と判定しています。
今回はここまで。
次回記事ではもっと深い(In deepな)説明をしたいと思います。
では、また!
いいなと思ったら応援しよう!
セーラー服が似合うおじさんです。猫好き、酒好き、ガジェット好き、楽しいことならなんでも好き。そんな「好き」をつらつらと書き留めていきます。