Я делаю проект, где есть комната, заполненная предметами различной формы.Обнаружение столкновений
Я рисую комнату в краске, будучи изображением всего белого и рисуя все стены/препятствия красным.
Я рисую каждый подвижный объект в другом файле, также используя краску.
Теперь я загружаю как карту комнаты, так и объекты как матрицу 1 и 0 в мою программу. У меня есть одна матрица для первой и другая матрица для каждого из объектов, которые я загружаю в комнату.
Объект сможет свободно перемещаться по комнате, перемещаясь на любое расстояние, под любым углом и позволяя вращаться. Как мне приступить к разработке метода, который позволяет мне поворачивать объект под любым углом и все еще иметь возможность обнаруживать столкновения? Я имею в виду, что если бы объект мог просто подняться, вниз, влево и вправо, я мог бы просто проверить обе матрицы, чтобы увидеть, перекрывают ли они один из 1-го. Но если я хочу повернуть объект, скажем, на 10º, я не вижу, как я могу преобразовать это в матрицу и проверить ее на матрицу стены.
Должен ли я отбросить матричное представление и создать математические области и справиться с этим, поскольку мы имеем дело с ним в исчислении IR^2, с некоторой библиотекой? Разве это не было бы дорогостоящим в вычислительных терминах?
Что такое простой способ для этого? Он не должен быть первоклассным методом, но я использую его для сложного алгоритма, и я бы не хотел потерять слишком много вычислительного времени на каждой итерации с этим.
Да, я уже думал об этом. –
Что касается более точного метода, у меня были мои объекты и мои препятствия, нарисованные на другом растровом изображении. Затем, когда мои hitboxes перекрываются, я сканирую перекрывающиеся пиксели в каждом растровом изображении, и когда я нашел пиксель, который был нарисован как на карте препятствий, так и на карте объекта, произошел а. Это работает, только если вы не беспокоитесь об объектах, сталкивающихся друг с другом. – climbage
a * произошло столкновение, то есть – climbage