В настоящее время я работаю над созданием своей первой игры FPS с использованием JOGL. (Привязки Java для OpenGL).OpenGL Collision Detection
До сих пор я мог генерировать «мир» (серия кубов) и модель игрока. У меня есть обнаружение столкновения между игроком и кубиками, отлично работающими.
Теперь я пытаюсь добавить в оружие. Я правильно рисую модели оружия и загружаю их на модель игрока. Первый пистолет, который я пытаюсь реализовать, - это лазерная пушка, которая стреляет и мгновенно лазера прямой видимости на все, на что вы нацеливаетесь. Прежде чем я буду работать над реализацией моделей противника, я хотел бы получить обнаружение столкновения между лазером и стенами.
В настоящее время мой лазер нарисован рядом маленьких кубиков один за другим. Первый куб рисуется в конце игрового пистолета, затем он непрерывно отталкивается оттуда. Идея заключалась в том, чтобы продолжать рисовать кубы лазера, пока не обнаружилось столкновение с чем-то, а именно кубиками в мире.
Я знаю расположение кубов в мире. Проблема в том, что я должен вызвать glMatrixPush для рисования моей модели персонажа. Лазер затем рисуется в этом обзоре. Это означает, что я потерял свою прежнюю систему координат - так что я рисую мир в одной системе, затем лазер в другой. Внутри этой матрицы проигрывателя я несколько раз звоню glRotate и glTranslate, чтобы синхронизировать все с тем, как поворачивается камера. Затем лазер строится путем перевода по оси z этой новой системы.
Моя проблема заключается в том, что через все эти преобразования я больше не знаю, где мой лазер существует в системе координат карты, в первую очередь из-за поворотов, связанных с камерой.
Кто-нибудь знает способ - или есть идеи, как решить эту проблему? Я считаю, что мне нужен способ конвертировать новые координаты лазера в старые координаты карты, но я не уверен, как идти о том, чтобы уничтожить все преобразования, которые были с ним сделаны. Также могут быть некоторые функции, предоставляемые OpenGL для решения таких проблем, о которых я просто не знаю.
+1 Я думаю, вы объяснили, что часть проблемы лучше, чем я. :) – Trillian