Как научить ботов избегать границ игрового поля?
я пишу небольшую 2D игру, в которой различные юниты с разными характеристиками могут размножаться, сражаться, питаться и так далее. Для передвижения юнитов я использую векторы. В метод move() юнита передаётся вектор, внутри метода вектор умножается на скорость юнита, и после этого попарно к координатам юнита прибавляются координаты вектора.
На рисунке показан пример того, как передвигается синий юнит. Он убегает от красного, поэтому строится вектор (я нарисовал его красным цветом), который отдаляет синего от красного. Рядом с синим находится еда (зелёным цветом), поэтому также строится вектор, приближающий синего к еде. В итоге все вектора суммируются и получается единый вектор, по которому и будет двигаться юнит (нарисовал его чёрным цветом).
Я не могу разработать хороший алгоритм, который позволил бы юнитам избегать границ поля. Если запретить координатам юнита становиться отрицательными или слишком большими, то юнит просто будет прижиматься к стенке, когда за ним будут гнаться. Нужно строить какие-то вектора, отталкивающие юнита от границ поля, но вопрос - как? Тут нет единой точки, откуда можно начать строить вектор, и нет конкретного направления, по которому юнит должен отдалиться от границ.
Мне нужен именно принцип, по которому должны строиться векторы, не дающие юниту выйти за границы, при этом юнит должен поступать так, чтобы выжить, то есть не только избегать границ, но и убегать от врагов одновременно.
