1

私はタイルセット(他の小さな画像でいっぱいの画像)を持っています。そして、タイルと呼ばれる小さな画像の 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_wtile_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) を出す方程式はどのように正しいのでしょうか? 私はそこに何が欠けていますか?

4

1 に答える 1

1
x = ((i - 1) % tiles_hor) * tile_w
y = ((i - 1) / tiles_hor) * tile_h
于 2012-07-28T04:07:51.833 に答える