2011-12-22 4 views
0

Я просто задавался вопросом, что является лучшим способом ответить на столкновение карты 2d в java.Ответ на столкновение карты плитки в java

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

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

Путь я в ответ на столкновения прямо сейчас:

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

Я думаю, что я пытаюсь сказать, что это лучший способ ответить на столкновение?

help был бы благодарен, благодарит за сообщение.

+0

Просьба предоставить более подробную информацию о том, как двигаются ваши спрайты: они свободно перемещаются внутри карты? они перемещаются в соответствие с какой-то сеткой (например, pacman)? сколько спрайтов вы можете столкнуться в одно и то же время? 10? 1000? –

+0

Игрок может свободно перемещаться по карте плитки. – kocon12

ответ

0

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

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

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

i = floor (player.x/32);

j = пол (player.y/32);

Смежные вопросы