0

最近、アイソメ マップの表示スタイルをスタガードからダイアモンドに変更しましたが、タイルの選択プロセスがわかりません。

私はこの件に関する他の既存のスレッドをよく知っており、それらすべてを読みましたが、解決策を見つけていません (最近の私の集中力はめちゃくちゃです)。

私は非常に基本的なシステムを使用しています。これは、すべてのタイルを通過し、マウスが指しているタイル (この Map.Tile.Intersects(mouse.Rect) のようなもの) を選択してから、選択したカラーマップの助けを借りて正しいタイル。

しかし、私はこのシステムが好きではありません。なぜなら、私が見たが理解できなかったいくつかの数学的解法に比べてかなり効率が悪いからです。

したがって、マップを作成するために使用するコードは次のとおりです。

int x = 128 * j;
int y = 64 * i;
int isoX = (6 * 64) + (x - y);
int isoY = (x + y) / 2;

128 は tileWidth 、64 tileHeight および 6 * 64 は xOffset

そして、座標は次のようになります。

ここに画像の説明を入力

誰かが私にヒントを与えたり、私が何をすべきかを説明したりできますか?
ありがとうございました。

4

1 に答える 1

2

数式を連立方程式に入れると、次のようになります。

isoX = 6 * 64 + 128 * j - 64 * i
isoY = 128 / 2 * j + 64 / 2 * i

行列を簡単に反転して方程式を得ることができます。

i = -1/128 * isoX + 1/64  * isoY + 3
j =  1/256 * isoX + 1/128 * isoY - 3/2
于 2013-10-14T08:57:27.823 に答える