タイルを配置する場所やタイルの角を見つけるのにそれほど問題はありませんでしたが、ホバリングしているピクセルがどのグリッド ユニットに属しているかを判断するための数学/公式がわかりません。私のグリッドは次のように実行されます:
y0,x0|y0,x1|y0,x2
y1,x0|y1,x1|y1,x2
y2,x0|y2,x1|y2,x2
y0,x0 は上部/背面であり、キャンバスの上端に対して中央に配置されます。タイルの幅が通常の 2 倍になります。マウスのピクセル座標オフセットがタイルと同じになるように、オフセット コードが機能するようになりましたが、困惑しています。
編集:紛らわしい質問で申し訳ありません。徹夜のコード セッションの疲労。
私はこの機能を持っています(ここでは簡略化されています):
getTilePixelCoord(x,y)
{
p.x = S-yH+xH;
p.y = yM+xM;
return p;
}
タイルを配置するために使用します。S は原点で、常に 0y,0x が配置されます。H はタイル ピクセルの高さ、M は H/2 です。私が必要とするのは、これの反対である getPixelTileCoord(pixelx,pixely); です。ホバリングしているタイルを取得するため。