Shape raycasting: лучший способ определить последнюю позицию, которая НЕ пересекает что-либо? - PullRequest
0 голосов
/ 13 июня 2011

Я использую Box2D (в частности, jBox2D) и пытаюсь сделать столкновение блоков, подобное тетрису (то есть остановку непосредственно перед тем, как они перекрывают друг друга, чтобы они беспрепятственно сцепились)

Какой самый простой методопределить последнюю позицию вдоль «луча» до того, как форма пересекает другую?(т. е. определить, в каком положении должен находиться блок, если он движется в определенном направлении, так что он плавно сцепляется с другими блоками) Box2D, кажется, предоставляет общие функции лучевого вещания, но я не могу понять, как это легко сделать с помощью предоставленных функций.*


(Примечание. Как правило, блочную игру можно смоделировать как сетку, что значительно упрощает обнаружение столкновений / пунктов назначения, поскольку вам не нужно полагаться на фактические свойства 2D / 3D. Однако это не так.можно использовать такую ​​сетку в моей ситуации)

1 Ответ

0 голосов
/ 14 июня 2011

ОК, я думаю, что у меня есть обход этой проблемы, по крайней мере, для моего случая - как только я определила точку пересечения из радиопередачи как обычно, я придумал несколько функций, которые могут определить ( в зависимости от размера и формы объекта, который пересекается + пересекается) положение, в которое объект должен «прибыть», чтобы хорошо сочетаться с другим блоком. Таким образом, я в основном решаю ту же проблему, но не напрямую с самим raycast. Есть несколько случаев, когда это работает не так хорошо, но на данный момент этого достаточно для моего проекта

Однако мне все еще интересно, есть ли точный ответ на первоначальный вопрос: есть ли метод или вариант поверх обычного лучевого вещания, который может определить последнюю «хорошую» позицию формы перед это пересекается?

@ iforce2d - Может быть, я неправильно понял, но наверняка информация, которую Box2D даст мне, будет когда-либо только там, где находится перекресток и как далеко он от начала? Ни то, ни другое полностью не делает то, что я хочу - я хочу, чтобы точка last point до пересекалась так, чтобы две фигуры могли быть расположены так, чтобы не пересекаться (то есть как можно ближе друг к другу, насколько это возможно без пересечения)

...