マップ表示を作り始めてみたところで、HSP3.7 β5が公開された。
マップ表示機能とスプライト機能が強化されており、今回作ろうとしている新しいゲームでも、使えそう。
ということで、今年のコンテスト作品は、HSP3.7 β5ベースで作ることにした。
3.6での学習中に、マップ内の自機の移動と、画面端まで来たときにマップをスクロールするところまで出来たので、次は障害物やアイテムとの当たり判定を作ろうと思っていたのだが、なんとマップ自体に属性を持たせ、それらとの当たり判定を行える命令群が追加されたのだった。自前で作らなくてよくなってラッキー♪ww
と思って、さっそく始めてみたが、また一癖ある感じでなかなか理解ができなかった…
まずは、マップのチップごとに属性を設定するes_bgattr命令を使う。
チップ単位で6つの属性から選ぶことができる。
- ESMAP_ATTR_NONE 侵入可能な場所(デフォルト)
- ESMAP_ATTR_NOTICE 侵入可能で当たり判定あり(通知アイテム)
- ESMAP_ATTR_ANIM セルのアニメーションフラグ
- ESMAP_ATTR_EVENT 侵入可能で当たり判定あり(イベントアイテム)
- ESMAP_ATTR_HOLD 侵入可能だが足場になる
- ESMAP_ATTR_WALL 侵入不可の壁
RPGの2Dマップだけじゃなくて、2Dアクションゲームなどにも使えそうな属性が用意されている。
とりあえず、テスト用のマップでは、壁と水のチップを侵入できない壁に設定する。
es_bgattr 0,2,3,ESMAP_ATTR_WALL
次は、スプライトを定義したときに、マップとの当たり判定を付けるかを決める、es_bglink命令を使う。
BGNo.と、どう当たり判定を付けるかを決められるが、まずはes_bgattr命令で設定したアトリビュート値に基づく接触判定を行うESSPMAPHIT_BGHITを設定した。
es_bglink 0, ESSPMAPHIT_BGHIT
これで下準備は完了。