Я делаю небольшую игру/RTS в середине, у меня есть следующие потребности:SpriteKit Detect Ranges
Я хочу вражеских игроков, чтобы атаковать союзников, и наоборот, когда они находятся в каждом диапазоне атаки.
Мой вопрос: что было бы лучшим подходом к поиску, если вражеские юниты находятся в зоне атаки союзников или наоборот?
Что есть я пробовал:
Пока я пытался добавить SKNodes
с SKPhysicsBodies
для каждого единичного узла.
Я вижу, что FPS снижается, когда происходит контакт ... Я думаю, это был не лучший способ узнать, находятся ли враги в радиусе действия.
Я предполагаю, что моя альтернатива заключается в том, чтобы запустить некоторый метод вложенной петли в рамках метода обновления и проверить, есть ли в радиусе вражеские юниты. Я не уверен, что это лучший подход, однако при таком подходе я могу играть с некоторыми параметрами и, возможно, оптимизировать процедуру для своих собственных нужд.
Я хотел бы знать, есть ли какие-то лучшие альтернативы.
Спасибо за ваш ответ, У меня есть некоторые проблемы с использованием отрядов для союзных подразделений (Я разрешаю пользователю полностью управлять единицами по одному или динамическими формациями). Вражеские юниты действительно идут по фиксированным отрядам. Спасибо за рекомендации по расстоянию – ColdSteel
вы просто держите стопку узлов отряда удобными и используйте метод moveToParent для обмена между ними – Knight0fDragon
Я думаю, это просто не подходит для моего игрового процесса (я хочу достичь элемента управления, как это было в игре Myth2). В любом случае я выполнил большинство ваших предложений. Я проверяю каждую юнитовую единицу, насколько далеко от вражеской команды, если в дальности он атакует тех, кто когда-либо находится в отряде врагов. Я вызываю эту проверку в фоновом потоке из метода - update ...однако, если я не использую подход Shield Window, fps составляет около 40, и у меня есть только 11 единиц 1 дружелюбный и 10 противников в 1 команде :-( – ColdSteel