Дізнайтеся, в яку плитку приземлився клацання миші


9

Я працюю над грі на основі ізометричної сітки, і у мене виникає проблема, що намагається пов'язати клацання миші від користувача до плитки. Мені вдалося розділити проблему на 2 частини:

  • Пошук прямокутника, який оточує плитку (що я міг зробити)
  • З'ясувавши з прямокутника, в яку плитку потрапив клацання (мене наткнуло)

Ось приклад прямокутника з плиткою з внутрішньої сторони:

Прямокутник, що містить плитку

Прямокутник довжиною 70 пікселів і висотою 30 пікселів, тому, якщо я використовую вхід, скажімо, 30x (верх) / 20y (зліва), як би я взявся до визначення, в яку плитку потрапила ця плитка?


3
Можливий дублікат: gamedev.stackexchange.com/questions/12362 / ...
thedaian

А як щодо зміни координат, а потім перевірки? Якщо у вашій плитці є шматочки кільця, ви неодмінно використовували б полярну систему координат.
FxIII

Відповіді:


8

Для кожного кроку, який ви робите у напрямку x, ви рухатиметесь 35px вліво та -15px до свого полотна;

Для кожного кроку, який ви зробите у напрямку 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, ви отримаєте координату всієї плитки.


прямокутник довжиною 70 пікселів, тоді крок - 35 пікселів, а не 30 пікс (в горизонталі)
CeeJay
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.