Mencari tahu ubin mana klik mouse masuk

9

Saya sedang mengerjakan game berbasis grid isometrik dan saya mengalami masalah saat mencoba menghubungkan klik mouse dari pengguna ke ubin. Saya telah dapat membagi masalah menjadi 2 bagian:

  • Menemukan persegi panjang yang mengelilingi ubin (yang telah saya bisa lakukan)
  • Mencari tahu dari persegi panjang yang ubin klik mendarat (telah membuat saya bingung)

Berikut ini adalah contoh kotak dengan ubin di bagian dalam:

Ubin persegi panjang yang berisi

Persegi panjang adalah 70px panjang dan 30px tinggi jadi jika saya menggunakan input katakanlah 30x (atas) / 20y (kiri) bagaimana cara menentukan ubin yang jatuh ke dalam ini?

Beling
sumber
3
Kemungkinan rangkap: gamedev.stackexchange.com/questions/12362/…
thedaian
Bagaimana dengan perubahan koordinat dan kemudian pemeriksaan? Jika ubin Anda tempat irisan cincin, Anda pasti akan menggunakan sistem koordinat kutub.
FxIII

Jawaban:

8

Untuk setiap langkah yang Anda buat dalam arah x Anda akan bergerak 35px ke kiri dan -15px ke kanvas Anda;

Untuk setiap langkah yang Anda buat ke arah y Anda akan bergerak -35px ke kiri dan -15px ke kanvas Anda;

ubin ke kartesius

Ini berarti Anda dapat mengonversi sistem koordinat ubin Anda dengan mudah dalam piksel:

(x, y) => (35 · x, -15 · x) + (-35 · y, -15 · y) = (35 · x - 35 · y, -15 · x - 15 · y) = ( Xpx, Ypx)

Anda harus menyelesaikan masalah terbalik yang Anda tahu Xpx dan Ypx dan Anda ingin tahu x dan y (di koordinat ubin).

Xpx = 35 · x - 35 · y;

Ypx = -15 · x - 15 · y;

dapatkah Anda menyelesaikan ini?

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

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

Jelas Anda akan memiliki nilai-nilai non integer dalam kasus umum: mengambil ceil dari kedua x dan y akan memberi Anda koordinat seluruh ubin.

FxIII
sumber
persegi panjang adalah 70px panjang, maka langkahnya adalah 35px dan bukan 30px (secara horizontal)
CeeJay