Задать вопрос

Как обрабатываются коллизии в LibGDX?

Здравствуйте.
Есть задумка для создания 2D игрушки, для одной организации.
Скажите пожалуйста как обрабатываются коллизии в LibGDX? Какие классы используются для проверки столкновений?

Например у меня по всей карте раскидываются прямоугольные рандомные объекты, и мне нужно узнать какие из объектов пересекаются, при этом возможно вращение объектов...

Благодарю.
  • Вопрос задан
  • 2491 просмотр
Подписаться 5 Оценить Комментировать
Решения вопроса 1
Mishok2000
@Mishok2000
Творческий программист
1. Если в игре не используется физ. движок Box2D, то коллизия определяется простыми проверками x, y двух объектов. Т.е. строиться некий цикл:
for(int i=0; i second_object.x && first_object.x < second_object.x + second_object.width && firs_object.y + first_object.height > second_object.y && first_object.y < second_object.y + second_object.height)
collisia = true;
}
}
Но такой способ подойдет не всегда, и если ты создаешь платформер, то чаще всего лучше воспользоваться движком Box2d. Именно в твоем случаи с вращением лучше его и использовать.
2. Box2d - suvitruf.ru/2012/12/22/2764
habrahabr.ru/post/162079
(вроде от одного автора)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@delphikettle
Программирую в свободное от учёбы время
В libGDX имеется встроенный физический 2D движок Box2D. Он как раз таки и может обрабатывать колизии. Гуглите, как работать с ним.
Ответ написан
Комментировать
Dit81
@Dit81
Security researcher, pentester, internet-marketer
Мне помогла написанная функция проверки столкновений прямоугольника с прямоугольником ... Вот:
// Функция проверки на столкновения
function checkForCollision(obj1, obj2){
if ((obj1.x < obj2.x + obj2.width) && (obj2.x < obj1.x + obj1.width) && (obj1.y < obj2.y + obj2.height) && (obj2.y < obj1.y + obj1.height)) return true;
return false;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы