Я делаю игру в Unity3D и в настоящее время создаю ИИ для врага.Враг должен ходить и искать игрока, не врезаясь в стены.
Враг всегда движется вперед по своей локальной оси z, пока не встретит препятствие или луч, сделанный Raycast
, попадет на объект.Когда Raycast
попадает на объект, являющийся частью окружающей среды, он Raycast
во всех 7 направлениях по диагонали, из стороны в сторону и спереди назад, чтобы проверить наличие рядом препятствий, как показано на этом изображении.
![Raycast Example](https://i.stack.imgur.com/vl2zk.png)
Путь, по которому он идет, определяется тем, попадают ли эти лучи в другой объект и идут ли в том направлении, в котором луч ничего не ударили это самое оптимальное направление.
По самое оптимальное Я имею в виду в следующем порядке:
- fl ИЛИ fr
- l ИЛИ r
- bl ИЛИ br
- b
На основе этих данных мне нужно решить, в каком направлении повернуть.Если в случае, когда, скажем, fl и fr оба имеют значение true, я бы случайно выбрал между двумя направлениями.
Я хочу оптимизировать этот процесс, чтобы мне не приходилось использовать несколько операторов if.Я думал об использовании методов битовой маскировки, поскольку есть 8 направлений, если вы включите вперед, и каждый бит может представлять направление.
Любые идеи, конструктивная критика и т. Д. Приветствуются.Спасибо за ваше время.