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:
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?
Jawaban:
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;
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.
sumber