Unity A * Pathfiding из списка - PullRequest
0 голосов
/ 30 апреля 2020

Я разрабатываю игру в стиле Dungeon Crawler и устанавливаю кучу объектов позиции в качестве «сетки» для ходьбы игрока и сохраняю их в родительском объекте, например в списке. Поэтому я хотел использовать этот же список для движения противника, но после нескольких недель просмотра множества учебных пособий по A * Pathfinding у меня не было идей, как его решить, поскольку я не использую обычную 2D-сетку. Вот ссылка .

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Есть много способов сделать это. Одним из предложений будет создание невидимого коллайдера с триггером (может быть на пустом GameObject) в разных областях вашей сетки. Дайте врагу заданную по умолчанию скорость и прикрепите к нему коллайдер и установите флажок для триггера, чтобы, когда враг двигался к триггеру, вы могли вызвать OnTriggerEnter (из сценария, прикрепленного к врагу или невидимому коллайдеру GameObject), и изменить его. его движение. Как вы хотите реализовать ИИ, зависит от вас.

отредактируйте согласно комментарию

поместите невидимые игровые объекты, расположенные на вашей сцене, в то, как вы представляете их в массиве с высоты птичьего полета. В скрипте назначьте их массиву. Заставьте врага прыгать между точками в массиве на основе вашего алгоритма ai. https://docs.unity3d.com/ScriptReference/Vector3.Lerp.html

0 голосов
/ 30 апреля 2020

Я посмотрел на ваше изображение, и у вас действительно есть сетка. То, что вы разместили свои объекты, не означает, что вы можете вычислить для них «сетку» из списка.

Я бы предложил вам создать функцию, которую вы вызываете, когда ваш уровень начинается ... и она выполняет итерации по дочерним элементам. этого объекта и генерирует структуру данных, которая позволяет использовать A * для расчета пути. Вы можете использовать transform.position для каждого объекта, чтобы определить его относительное размещение / смежность.

...