Ответ на столкновение карты тайла в Java - PullRequest
0 голосов
/ 23 декабря 2011

Мне было просто интересно, как лучше всего реагировать на столкновение 2d карты тайла в java.

У меня есть настройки кода, так что когда прямоугольник игроков пересекается с прямоугольником плиток, который является частью 2-го массива прямоугольников (Rectangle [] [] collRects), происходит столкновение.

Я знаю, как это настроить, но когда я запускаю программу, и игрок сталкивается с плиткой, игрок перемещается вдоль края внутренних плиток и в конечном итоге проходит через прямоугольники столкновения.

Я реагирую на столкновения прямо сейчас:

  1. Я проверяю, были ли утверждения, с какой стороной фишки столкнулся игрок.
  2. У игрока есть переменная скорости, поэтому я установил на ноль значение на любой оси, по которой двигался игрок до столкновения.

Полагаю, я пытаюсь сказать, как лучше всего реагировать на столкновение?

Помощь будет принята с благодарностью, Благодарю.

1 Ответ

0 голосов
/ 24 декабря 2011

Если я правильно понимаю, кажется, что вы заинтересованы в обнаружении коллизий между игроком (спрайтом) и тайлами (вместо других свободно движущихся спрайтов).

Для этого, некоторая простая модульная арифметика должнаДостаточно определить (из верхних левых (x, y) координат игрока), какая плитка сталкивается на карте.

Предполагается, что карта состоит из матрицы плиток NxM, пронумерованной от 0...N-1 по горизонтали и 0..M-1 по вертикали, а размер плитки составляет 32x32 пикселя, тогда координата сталкивающейся плитки (i, j) равна:

i = floor (player.x / 32));

j = этаж (player.y / 32);

...