Я пытаюсь реализовать двумерное обнаружение столкновений с двумя прямоугольниками, построенными с использованием графического пакета. К сожалению, я начинаю думать, что не понимаю логики, необходимой для написания функции, которая будет обрабатывать это.C++ 2D многоугольник Обнаружение столкновений
Ниже мой код, который рисует небольшой спрайт и пару других прямоугольников. Мой спрайт перемещается с вводом клавиатуры.
Я использовал несколько книг, а также пробовал такие сайты, как Nehe и т. Д., И, хотя они действительно хорошие учебники, они, похоже, напрямую связаны с 3D-столкновением.
Может кто-нибудь, пожалуйста, покажет мне эффективный способ обнаружения столкновения с использованием моих прямоугольников выше? Я знаю, что вам нужно сравнить координаты каждого объекта. Я просто не уверен, как отслеживать положение объектов, проверять столкновение и останавливать его движение, если оно столкнется.
Я сам изучаю и, кажется, остановился уже несколько дней. Я полностью из идей и искал больше страниц Google, чем я помню. Прошу прощения за мою наивность.
Буду признателен за любые конструктивные комментарии и пример кода. Спасибо.
void drawSprite (RECT rect){
glBegin(GL_QUADS);
glColor3f(0.2f, 0.2f, 0.2f);
glVertex3f(rect.x, rect.y, 0.0);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(rect.x, rect.y+rect.h, 0.0);
glColor3f(0.2f, 0.2f, 0.2f);
glVertex3f(rect.x+rect.w, rect.y+rect.h, 0.0);
glColor3f(1.0f, 1.0f, 1.0f);
glVertex3f(rect.x+rect.w, rect.y, 0.0);
glEnd();
}
void drawPlatform (RECT rect){
glBegin(GL_QUADS);
glColor3f(0.2f,0.2f,0.0f);
glVertex3f(rect.x, rect.y, 0.0);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(rect.x, rect.y+rect.h, 0.0);
glColor3f(0.2f, 0.2f, 0.0f);
glVertex3f(rect.x+rect.w, rect.y+rect.h, 0.0);
glColor3f(1.0f, 1.0f, 0.0f);
glVertex3f(rect.x+rect.w, rect.y, 0.0);
glEnd();
}
Поиск в Интернете для «Обнаружения двумерных столкновений» содержит множество учебников. Можете ли вы описать, почему они не работали для вас? –
Думаю, потому что я их не понимаю. Возможно, я читал слишком много и смущаю себя. Я думаю, что, когда я ошибаюсь, я не уверен на 100%, как отслеживать текущую позицию спрайта, поэтому я думаю, что я всегда сравниваю источник спрайтов x/y, который, конечно, всегда будет возвращаться как ложный столкновение ... – Reanimation
Вы можете уточнить свой вопрос до определенного «первого шага», который вы пытаетесь. Возможно, отслеживание позиции.Если учебники только смутили вас, то просьба о другом учебнике, вероятно, не поможет. –