Objective-C рисует путь и определяет, когда он закрывается (образует замкнутую форму) - PullRequest
0 голосов
/ 27 февраля 2011

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

Направление, о котором я думаю, - это нарисовать путь следа на изображении, невидимом на экране, и время от времени пытаться залить его определенным цветом, а затем проверить, не попала ли заливка на пути следа. Однако это похоже на большие накладные расходы.

Есть идеи, как это сделать? Я использую cocos2d, если это поможет

1 Ответ

1 голос
/ 27 февраля 2011

В программировании игр вам часто нужно думать более математически, чем визуально.

Сначала ваш корабль непрерывно оставляет след на экране? Если да, тогда будет легче узнать, когда форма закроется: вам просто нужно запомнить координату, где ваш корабль начал покидать след, а затем подождать, пока след приблизится к этой координате в другой раз (например, в радиусе 10 пикселей, иначе пользователю нужно быть очень точным, чтобы попасть точно в один и тот же пиксель, чтобы закрыть форму).

Визуальное представление трассы доступно только пользователю, вы никогда не будете использовать его для вычисления чего-либо. Что вы будете делать, так это сохранить в памяти путь, по которому идет след корабля: многоугольник, представляющий собой не что иное, как список координат, которым он следовал.

Затем, когда вы узнаете, что ваша фигура закрыта, вы должны определить, находится ли объект внутри вашего многоугольника или нет. Вполне возможно, что target-c или cocos2d (я не знаю много об этом) уже содержит встроенную функцию, чтобы узнать, находится ли точка внутри многоугольника. В Java есть класс Polygon, который делает это действительно легко. Если вы не нашли ничего, что могли бы сделать сами, на SO уже есть отличные ответы по этому вопросу, вот хороший: Как я могу определить, находится ли 2D-точка в многоугольнике?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...