Добрый день. Есть такая задача:
Объект-NPC с поведением GridMovement при наступлении условия должен следовать к другому объекту с заранее неизвестными координатами.
Пробовал реализовать посредством объекта-маркера. В начале уровня координаты маркера совпадают с координатами NPC, затем маркер последовательно (set position) обходить смежные с NPC ячейки сетки и если выполняется условие поиска NPC получает команду move vertical/horizontal. Работает вроде нормально, объезд препятствий получился вполне себе ничего. Но для поиска удалённого (3-4 ячейки сетки) объекта получается не очень. Не хватает знаний по организации цикла и массивам. Подскажите, как это можно реализовать, чтобы маркер по спирали обходил ячейки вокруг NPC и при попадании на искомый объект давал ему команду move. Если объяснения не понятны могу сделать исходник. Заранее спасибо за ответы, надеюсь тема поможет ещё кому-то.Добавлено (10.02.2014, 13:38)
---------------------------------------------
Решил проблему сам. Без массивов и циклов.
Каждую миллисекунду маркер меняет позицию относительно NPC на рандомное число ячеек влево-вправо/вверх-вниз. Если позиция маркера совпадает с позицией искомого объекта, NPC двигается горизонтально/вертикально в зависимости от своего положения относительно маркера. Если NPC натыкается на искомый объект, то маркер устанавливается в исходное состояние и ждёт следующего сигнала к поиску.
Есть недостаток таким образом NPC идёт не к ближайшему, а к произвольному объекту и по пути может отвернуть от него - но в целом это вполне реалистично. Часто хомяки так и поступают.