マウスクリックが到達したタイルを見つける


9

私は等尺性グリッドベースのゲームに取り組んでおり、マウスクリックをユーザーからタイルにリンクしようとすると問題が発生します。私は問題を2つの部分に分けることができました:

  • タイルを囲む長方形を見つける(私はそれを行うことができました)
  • クリックが入った四角形からタイルを見つけ出します(私を困らせました)

これは、内側にタイルがある長方形の例です。

タイルを含む長方形

長方形は長さ70px、高さ30pxなので、たとえば30x(top)/ 20y(left)の入力を使用する場合、これがどのタイルに該当するかをどのように判断しますか?



座標変更とチェックについてはどうですか?あなたのタイルが輪切りのスライスである場合、あなたはきっと極座標系を使うでしょう。
FxIII、2011年

回答:


8

x方向に行う各ステップで、キャンバスまで左に35ピクセル、上に-15ピクセル移動します。

y方向に行う各ステップで、-35pxを左に、-15pxをキャンバスまで移動します。

デカルトへのタイル

これは、タイル座標系をピクセル単位で簡単に変換できることを意味します。

(x、y)=>(35・x、-15・x)+(-35・y、-15・y)=(35・x-35・y、-15・x-15・y)=( Xpx、Ypx)

XpxとYpxを知っていて、xとy(タイル座標)を知りたいという逆の問題を解決する必要があります。

Xpx = 35・x-35・y;

Ypx = -15・x-15・y;

これを解決できますか?

x = 1/70・Xpx-1/30・Ypx

y = -1 / 70・Xpx-1/30・Ypx

明らかに、一般的なケースでは非整数値になります。xとyの両方のセルを取得すると、タイル全体の座標が得られます。


長方形の長さは70pxで、ステップは35pxであり、30pxではありません(水平方向)
CeeJay
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.