#cocos2d-iphone #box2d #box2d-iphone
#cocos2d-iphone #box2d #box2d-iphone
Вопрос:
Я пишу игру, в которой форма круга приземляется на форму b2LoopShape, состоящую из нескольких сотен вершин.
Я пытаюсь определить, является ли моя посадка плавной или нет (посадка вдоль края или перпендикулярно краю), используя прослушиватель контактов, но не могу сделать это правильно.
Есть идеи?
Ответ №1:
Форма петли состоит из нескольких краевых сегментов. Вам нужно будет перебрать все сегменты ребер и найти ближайшую точку на каждом ребре к центру вашего круга. Ближайшей из всех этих точек должна быть точка, фактически использованная для столкновения. Если она находится на одном из «кончиков» сегмента ребра, к которому она принадлежит, окружность попадает в конец ребра. Если она находится где-то посередине края, она приземлилась плавно.
Возможно, я неправильно понимаю, что вы подразумеваете под «плавно», но в любом случае, если вы выполните описанное выше, у вас будут две конечные точки ребра, по которому фактически был нанесен удар, и направление перемещения окружности, так что вы можете использовать их, чтобы решить для себя, гладко это или нет.
Комментарии:
1. Спасибо! Я разобрался с первой частью, но я хотел бы придумать умный метод для второй части.
2. Я не могу дать вам точный ответ, потому что я никогда не делал этого раньше и очень мало знаю об этом, но мне кажется, что вам нужно, это наложение лучей (или двух или трех) и, возможно, проверка линейной (или угловой) скорости. Удачи.