こんばんは。
screen_x、screen_yのどちらも
キャラクターの現在の座標(表示する座標)で合っていると思います。
画面の端でずれたりするのは気になりますね。
real_x、real_y が実数扱いで細かいので、
screen_x、screen_yもそれ伴い、1pxより細かい値が返る場合もあります(移動中、ジャンプ中、画面スクロール中など)。
コード: 全て選択
#--------------------------------------------------------------------------
# ● 画面 X 座標の取得
#--------------------------------------------------------------------------
def screen_x
$game_map.adjust_x(@real_x) * 32 + 16
end
#--------------------------------------------------------------------------
# ● 画面 Y 座標の取得
#--------------------------------------------------------------------------
def screen_y
$game_map.adjust_y(@real_y) * 32 + 32 - shift_y - jump_height
end
▼以下、640✕480化を済ませている場合の数値です。
screen_x: メソッド内で +16 していますので、32x32のキャラの中心座標を返す意図があります。
キャラが画面の一番左(マップの隅)にいるときは、screen_xは 16.0 を返しました。
キャラが画面中央にいるときは 320.0 を返しました。
screen_y: メソッド内で +32 していますので、32x32のキャラの下端の座標になります。
さらに - shift_y していますので、キャラの4pxずらしも反映させた座標を返しています。
ジャンプ中はその高さも反映しています。
キャラが画面の一番上(マップの隅)にいるときは、screen_yは 28.0 を返しました。
キャラが画面中央にいるときは 256.0 を返しました。
▼以下、VXaceデフォルトの画面サイズでの数値です。
screen_x:
キャラが画面の一番左(マップの隅)にいるときは、screen_xは 16 を返しました。
キャラが画面中央にいるときは 272.0 を返しました。
screen_y:
キャラが画面の一番上(マップの隅)にいるときは、screen_yは 28 を返しました。
キャラが画面中央にいるときは 220.0 を返しました。