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?



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.


persegi panjang adalah 70px panjang, maka langkahnya adalah 35px dan bukan 30px (secara horizontal)
CeeJay
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.