Форма петли Box2d, определяет плавную посадку

#cocos2d-iphone #box2d #box2d-iphone

#cocos2d-iphone #box2d #box2d-iphone

Вопрос:

Я пишу игру, в которой форма круга приземляется на форму b2LoopShape, состоящую из нескольких сотен вершин.

Я пытаюсь определить, является ли моя посадка плавной или нет (посадка вдоль края или перпендикулярно краю), используя прослушиватель контактов, но не могу сделать это правильно.

Есть идеи?

Ответ №1:

Форма петли состоит из нескольких краевых сегментов. Вам нужно будет перебрать все сегменты ребер и найти ближайшую точку на каждом ребре к центру вашего круга. Ближайшей из всех этих точек должна быть точка, фактически использованная для столкновения. Если она находится на одном из «кончиков» сегмента ребра, к которому она принадлежит, окружность попадает в конец ребра. Если она находится где-то посередине края, она приземлилась плавно.

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

Комментарии:

1. Спасибо! Я разобрался с первой частью, но я хотел бы придумать умный метод для второй части.

2. Я не могу дать вам точный ответ, потому что я никогда не делал этого раньше и очень мало знаю об этом, но мне кажется, что вам нужно, это наложение лучей (или двух или трех) и, возможно, проверка линейной (или угловой) скорости. Удачи.