В настоящее время я делаю игру на движке DirectX на С ++. Я использую поиск пути, чтобы направить армию солдат в определенное место. проблема в том, что я использую raycast, чтобы увидеть, нет ли на пути моего пути ничего, а это замедляет скорость игры. Есть ли лучший способ найти пути?
У меня также есть проблема с перемещением моей армии. Прямо сейчас я использую среднее количество позиций солдат в качестве начальной точки, что означает, что все солдаты должны идти туда прежде, чем перейти к конечной точке. Есть ли способ заставить их перейти к конечной точке, не переходя к начальной точке?
Спасибо за помощь.
Вы пробовали что-то вроде A-Star? перемещаться по узлам, или какое-то 2-мерное представление вашей карты? написано хорошо, это может быть как быстрее, так и легче делать с заданиями (многопоточность).
если у вас есть солдат, который находится в позиции A и должен добраться до B.
просто вычислите путь от C (среднее положение, что когда-либо) до B. получите направление от a до b и выполните некоторую интерполяцию. (не сделал этого или не попробовал, но это может сработать довольно хорошо!)
Проверяете ли вы каждый объект во время радиопередачи?
Это может быть очень дорого, если у вас много предметов и солдат.
Распространенным решением является разделение вашего мира на квадратные ячейки сетки и помещение каждого объекта в список объектов для этой сетки.
Затем вы проводите воображаемую линию от солдата до места назначения и проверяете каждую клетку, на какие объекты вам нужно попасть, чтобы испытать их. Таким образом, вы будете оценивать только объекты, расположенные близко к прямому пути, и игнорировать все остальные.