強火で進め

このブログではプログラム関連の記事を中心に書いてます。

IDEA*IDEAさんの「RPG編その4」の部分の解説補足(その2)

前回の続き。

max()の方の解説。元はこれですが

			x = Math.max(game.width,  x + map.width)  - map.width;

ちょっと分りづらいのでmax()の2つの引数に - map.width を行い以下に変更。

			x = Math.max(game.width - map.width,  x);

1つ目の引数で注目すべきは - map.width これはそのまま適用するとMap幅分のスクロール(Map幅分、描画開始位置が左に移動)になるので画面にはマップはまったく表示されなくなります。具体的にはMap画像の右端がゲーム画面の左端の1ピクセル左側になる位置までスクロールしてしまいます。

今回の場合ではゲームの画面サイズ分は残した状態でスクロールを止める必要が有ります。

ここではゲームの画面サイズ分、マイナスの値を減らすために game.width が使われています。これにより1つ目の引数の値がPlayerがMapの右端をうろちょろした時にゲーム画面サイズ分を残してスクロールをストップするリミッターになっています。

このリミッターが発動するのはあくまでPlayerが右端に移動し、Mapのスクロール可能な残りがゲームの画面サイズを切ってからです。それまでは2つ目の引数の min() で代入された x の値がそのまま使われます。