Нахождение объекта, ближайшего к месту назначения, при использовании поиска пути

Я надеялся получить некоторую помощь с псевдокодом моей 2D-игры Java,

Монстры (Оранжевые шары) бегут по черной линии через координаты пути (Точка):

    if(i.monsterx < i.chasePoint.getX()){
        i.monsterx++;
    }else if(i.monstery < i.chasePoint.getY()){
        i.monstery++;
    }else if(i.monsterx > i.chasePoint.getX()){
        i.monsterx--;
    }else if(i.monstery > i.chasePoint.getY()){
        i.monstery--;
    }

Каждый раз, когда монстр достигает "ChasePoint", он получает новую ChasePoint и т.д...

Черный квадрат должен выглядеть так, будто стреляет в монстров, а зеленый круг - стрельбище. Но как мне решить, куда попадает пуля? Я бы предпочел, чтобы черный квадрат стрелял в моба спереди, но поскольку мобы могут быть замедлены / оглушены и поэтому находятся не в определенном порядке, как я узнаю, какой из мобов самый длинный впереди?

1 ответ

Решение

Простейшим решением было бы, чтобы каждый монстр отслеживал пройденное расстояние (а не время, которое он прожил; из-за разных скоростей, потрясающих и т. Д.), А затем нацеливался на того, кто прошел самое длинное расстояние. Предполагая, что черный рельс не меняется, это позволит монстру, ближайшему к концу, быть целью.

Если черный рельс сильно меняется (из-за размещения новых башен), то попросите объект, который сгенерировал черный рельс (и регенерирует его при размещении башни), отметить, сколько блоков осталось у конкретной точки преследования, чтобы добраться до конца (это уже знает путь, так что это должно быть достаточно просто; я предполагаю, что вы используете алгоритм A* или аналогичный для генерации этого пути; если это так, это число в любом случае просто выпадает из алгоритма). Тогда монстру можно просто присвоить это значение в его обновлении chasePoint. Затем пушка спрашивает всех монстров в радиусе действия, насколько далеко они должны идти до конца, и нацеливается на того, у кого наименьшее число

Другие вопросы по тегам