私はタイルセット(他の小さな画像でいっぱいの画像)を持っています。そして、タイルと呼ばれる小さな画像の 1 つを取得して、それを使って何かをしたいと考えています。各タイルのサイズを知っています (すべて同じサイズです)。私は2つの方程式を持っています:
x = (i % tiles_hor) * tile_h
y = (i % tiles_ver) * tile_w
x = (i % tiles_hor) * tile_w
y = (i / tiles_hor) * tile_w
ここで、取得したいタイルのインデックスを意味します。
tiles_horは水平方向のタイルの数です。
tiles_verは垂直方向のタイルの数です。
tile_wとtile_hは、それぞれタイルセット内の各タイルの幅と高さです。
タイルは、次のように順番にインデックスを受け取ります。
01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
したがって、数字の各ペアは、タイルセット内のタイルのインデックスです。タイル 04 を取得したいとしましょう (タイルのサイズがそれぞれ 32x32 であると仮定します): 最初の式:
x = (4 % 5) * 32 = 128.画像内の x 位置は 128
y = (4 % 5) * 32 = 0.画像内の y は 0;
2 番目の式:
x = (4 % 5) * 32 = 128. したがって、画像内の x 位置は 128
y = (4 / 5) * 32 = 0. ここでは 0 です。最も近いマイナー番号の式 (私の表現が正しいかどうかわかりません。間違っている場合は修正してください)。
完全な正方形のタイルセット (この場合は 5x5) を検討していることに注意してください。
私の質問は次
のとおりです。2番目はほとんどの場合に機能します。完全な正方形のタイルセットがなく、高さが高い場合、最初に機能しなくなります。それで、私はそこで何が間違っていますか?
また、本当に重要な値 (tiles_ver と tile_h) を出す方程式はどのように正しいのでしょうか? 私はそこに何が欠けていますか?