Bir fare tıklamasının hangi kutucuğa indiğini bulma


9

Ben izometrik ızgara tabanlı bir oyun üzerinde çalışıyorum ve im bir kiremit kullanıcı fare tıklaması çalışırken bir sorun yaşıyorum. Sorunu 2 parçaya ayırabildim:

  • Bir kutucuğu çevreleyen bir dikdörtgen bulmak (yapabildiğim)
  • Tıklanan yere fayans dikdörtgeni bulmak (beni güldürdü)

İçinde fayanslı bir dikdörtgen örneği:

Fayans içeren dikdörtgen

Dikdörtgen 70 piksel uzunluğunda ve 30 piksel yüksekliğindedir, bu yüzden 30x (üst) / 20y (sol) diyelim bir giriş kullanırsam, bunun hangi döşemenin düştüğünü belirlemeye nasıl devam edebilirim?



Bir koordinat değişikliği ve sonra bir kontrole ne dersiniz? Eğer kiremit halka dilimi varsa, mutlaka bir kutupsal koordinat sistemi kullanırsınız.
FxIII

Yanıtlar:


8

X yönünde yaptığınız her adım için 35px sola ve -15px'i tuvalinize taşıyacaksınız;

Y yönünde yaptığınız her adım için -35px sola ve -15px'i tuvalinize taşıyacaksınız;

kiremit ila kartezyen

Bu, döşeme koordinat sisteminizi piksel cinsinden yavaşça dönüştürebileceğiniz anlamına gelir:

(x, y) => (35 · x, -15 · x) + (-35 · y, -15 · y) = (35 · x - 35 · y, -15 · x - 15 · y) = ( xpks, YPX)

Xpx ve Ypx'i bildiğiniz ve x ve y'yi (döşeme koordinatında) bilmek istediğiniz ters sorunu çözmeniz gerekir.

Xpx = 35 ° x-35 ° y;

Ypx = -15 ° x - 15 ° y;

Bunu çözebilir misin?

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

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

Açıkçası genel durumda tamsayı olmayan değerleriniz olacaktır: hem x hem de y'nin tavanını almak, tüm döşemenin koordinatını verir.


dikdörtgen 70 piksel uzunluğundadır, ardından adım 35 pikseldir ve 30 piksel değildir (yatay olarak)
CeeJay
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.