スクロールするマップ表示ができたので、マップ上にキャラクターを表示してみた。
キャラクタもスプライトで定義しておき、es_putで、表示位置を決めたら、es_drawで描画。
マップのスクロールは、カーソルキーで行っているので、キャラクターは画面中央に固定表示。
これで、それっぽくなった。完成~。いや、これじゃマップの端っこに行けないw
ある程度、マップをスクロールさせずに、マップ内をうろちょろできないと、ゲームが成り立たない。
そこで、XY座標を自機用とマップ表示用に分けておき、カーソルキーの操作で増減する変数を分岐させた。
自機がマップの端に来るまでは、自機用のXY座標値を増減する。端に来たら、次はマップ表示用のXY座標値を増減する。
マップ用のXY座標の上限、下限は、limit命令で補整する。
これで、マップを移動しつつ、画面の端に来たらマップをスクロールする仕組みを作れた。
(あとでわかるのだが、HSP3.7β5版の「珠音ドットフレームワーク」では、1つの設定で自動的にできるようになってた)
でも、なんかスクロールさせるとマップの端がちらちらする。
良く見ると、両端が表示で指定した領域からはみ出して描画されている。
試しに両端を塗りつぶしてみたら、左にずれてるんじゃなくて、両側にはみ出して表示されているのか。
— CORO3 (@Coro3_Coro3) 2023年5月9日
自前でboxfで塗りつぶして、マスクしなさいってことなのかな?#HSP3 #標準スプライト pic.twitter.com/BZwb5Y8TdX
これをツイートしたところ、公式さんからお返事が!ありがたいことです。
putbgは基本的には全画面に表示することを想定していて、はみ出た部分は適宜上から描画を行ってマスクする必要があります。
ということで、表示領域の外側を囲むように、boxf命令で塗りつぶす処理を追加して完成。
次はマップ内の障害物との当たり判定の作成をしようと思ってたのだが。次回へ続く。