Я пишу свою первую игру для андроида и столкнулся с проблемой проверки столкновений. Игра состоит из сцены прокрутки, в которой блок прыгает при постукивании и должен приземляться на зданиях с разной высотой. Проблема в том, что блок часто заканчивается через пол, из-за того, что фреймы не обновляются достаточно быстро. Я попытался помещать обнаружение столкновения в отдельный поток, и хотя это немного улучшает обнаружение, оно все равно не очень велико. Несмотря на то, что я компенсирую настройку высоты вручную для следующего кадра, я боюсь, что для более медленных устройств, чем мой Nexus 5, объект просто провалится через здание, как это иногда бывает на этом устройстве. Мой код выглядит следующим образом:Обнаружение столкновений для быстродвижущихся объектов
public void physics() {
// Generate Player Rectangle
player.set(x1,y1, x2,y2);
// Check building rectangle
if (player.intersects(x1,y1,x2,y2)) {
character.collide();
}
}
Может ли кто-нибудь указать мне в правильном направлении для обнаружения этого с большей точностью? Я не смог найти ответ, который мне подходит. Благодаря!
Вы не должны создавать новый экземпляр Rectangle для каждого тика игры. (если я не читаю его неправильно) – Nikki
Спасибо за ваш ответ Nikki - как бы я это сделал, не создавая новый кадр для движущегося объекта? – JaanRaadik
Вы должны создать свой прямоугольник один раз в методе init вашей игры. Затем каждый тик, обновляйте координаты прямоугольников: player.set (x1, y1, x2, y2); – Nikki