184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
1

Поиск пути

06.08.2016, 17:54. Показов 2953. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задался целью сделать движение персонажа по клику мыши. Пришел к необходимости наличия поиска пути. Сразу же отбросил NavMesh - у меня карта генерируется. Плюс в нем движение не абсолютно свободное, а строго по ребрам меша. Попробовал Astar (A*) - он мне тоже не подходит (тоже из-за движения по ребрам) - ни один из его вариантов.

Кто еще какие варианты знает?

Я хочу иметь движение, не строго по ребрам, а абсолютно свободное (между ребрами тоже), с единственной настройкой - дистанцией до объектов, внутрь которой меня просто не пустит (например, задавать половину ширины префаба игрока - тогда визуально будет казаться что он все же может подойти вплотную к объекту, но дальше - ни миллиметра).

На скриншоте мои неудачные попытки тестирования A*. Ясно видны движение строго по ребрам и ужасающие отступы от препятствий.
Миниатюры
Поиск пути  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2016, 17:54
Ответы с готовыми решениями:

AI поиск пути
Интересует возможность задать врагу возможность поиска пути, сейчас он упирается в стену...

Поиск Пути А*
Я создал тождественную карту из чисел Но теперь загвоздка какое условие нужно чтобы от перввого...

Поиск пути (скрипт)
Нашел такое решение поиска пути: Скрипт поиска. using System.Collections.Generic; using...

Поиск пути Raycast
Добрый день, я пишу поиск пути, как он работает? Персонаж кидает луч вверх, если там стена, он...

7
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
06.08.2016, 19:31 2
сетку сделать мельче не пробовали?
1
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
07.08.2016, 22:46  [ТС] 3
Попробовал. Стало немного лучше, но - незначительно. Отталкивался от мануала с офсайта, однако поиск ужасно глючит. По-моему уже все настройки перебрал. Либо объект игрока проходит сквозь стену у самого поворота (сокращая путь), либо ходит кругами секунды 2 практически в самом начале, прежде чем выбрать правильное направление.

Плюс я, очевидно, не разобрался, как же сделать стены препятствиями. Добавил слои стен и земли. Выбрал их в настройках A* в разделах коллизий и высот соответственно. Но - нет, стены не воспринимаются препятствиями.

Проект во вложении. Буду благодарен за советы.
Вложения
Тип файла: 7z New Unity Project.7z (3.39 Мб, 9 просмотров)
0
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
09.08.2016, 13:55  [ТС] 4
Есть мысли?
0
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
09.08.2016, 16:51 5
Еще не смотрел
0
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
09.08.2016, 21:59 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using UnityEngine;
using System.Collections;
using Pathfinding;
 
public class Ctrl : MonoBehaviour
{
    public Seeker _seeker;
    public Transform _mark;
 
    void Start()
    {
        _seeker = GetComponent<Seeker>();
        _mark = GameObject.Find("Sphere").transform;
    }
 
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Ray _ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit _hit;
            if (Physics.Raycast(_ray, out _hit, LayerMask.GetMask("Ground")))
            {
                _mark.position = _hit.point + Vector3.up*0.1f;
                _seeker.StartPath(this.transform.position, _hit.point, OnPathComplete);
            }
        }
    }
 
    public void OnPathComplete(Path p)
    {
     Debug.Log("Path complete!");
    }
}
Во вложении настройка сетки, поправил только срезание углов и диаметр коллизии капсулы.
Миниатюры
Поиск пути  
1
753 / 600 / 204
Регистрация: 06.08.2015
Сообщений: 2,432
09.08.2016, 21:59 7
Скрипт кидать на капсулу. Всё бегает нормально.
В самом начале бежит на сферу. Я хз почему.
0
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 828
10.08.2016, 09:09  [ТС] 8
Бежит на сферу потому что в том скрипте, что сейчас висит на капсуле, таргетом является трансформ сферы - специально сделал, чтобы не париться с созданием конечной точки пути по двойному клику. Ну, так быстрее было просто =)

Как я понимаю, в том скрипте поиска пути, который я использовал по-умолчанию (по мануалу - из стандартных A*) какая-то недоработка была?
P.S. скрипт еще не смотрел толком и не пробовал. Из дома посмотрю.
0
10.08.2016, 09:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2016, 09:09
Помогаю со студенческими работами здесь

Поиск пути в играх. Алгоритм поиска пути A*
В своё время долго и упорно разбирал различные алгоритмы поиска путей для различных задач. Сейчас,...

Поиск пути к файлам по фрагменту этого пути
Здравствуйте. У меня есть код, который удаляет все .txt файлы из определенной папки, конкретно из...

Поиск пути
Доброго времени суток. Пишу 2д рпг игру руководствуясь разными материалами из интерентов. Дело...

Поиск пути
Здравствуйте, посмотрите пожалуйста код и прокомментируйте на сколько рационально я использую...

Поиск пути
Люди добрые,помогите пожалуста с задачкой: Дан двумерный массив А состоящий из нулей и единиц,...

Поиск пути
Есть программа с поиском пути, берет карту города с файла, после рисует самый кратчайший маршрут....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru