Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как сделать чтобы юниты при столкновении обходили друг друга? (http://www.flasher.ru/forum/showthread.php?t=176466)

ashIndie 11.03.2012 17:02

Как сделать чтобы юниты при столкновении обходили друг друга?
 
Здравствуйте, жители форума!
Интересует собственно сабж.
Игра с видом сверху. Юниты умеют обходить препятствия, идти к точке, обнаружать столкновения друг с другом, но рационального и правильно рабочего метода для того чтобы они не входили друг в друга я так и не смог пока сделать. Юниты не управляются пользователем вобще никак. полностью ИИ. Они лишь идут всегда к герою чтобы его убить.
Какие есть идеи?...

-De- 11.03.2012 17:07

Есть идея, чтоб юниты всё-таки проходили друг сквозь друга. Так часто делают, именно потому что куча мороки сделать таки непроходимые юниты.
Как вариант можно, чтоб при столкновении каждый обходил справа, но, повторюсь, обычно решение достаточно замороченное.

Genzo 11.03.2012 17:10

Цитата:

Юниты умеют обходить препятствия,
По каком алгоритму?
Используйте A* и ставьте, на каждой итерации просчета пути, других юнитов не проходимыми (высокую стоимость).

Deimos747 11.03.2012 17:21

Цитата:

Используйте A* и ставьте, на каждой итерации просчета пути, других юнитов не проходимыми (высокую стоимость).
Учитывая, что юниты перемещаются, то лучше такой вариант:
1) Строить путь для текущего состояния, как сказал Genzo
2) На каждом шаге юнита проверять: клетка куда он хочет шагнуть свободна, если да то идём, иначе строим новый путь

Tails 11.03.2012 17:21

ashIndie
Пусть тупо расталкиваются. Самое простое решение. Вариантов реализаций множество.

ObOs 11.03.2012 17:28

Посмотрите тут . Только там на AS2, переделать на AS3 думаю будет не трудно

ashIndie 11.03.2012 18:03

ObOs, там они просто тупо входят друг в друга.
Genzo, нет алгоритм поиска пути у меня как в ссылке представленной ObOs, с xitri.com
Щас я сделал некий замороченный вариант. При столкновении один юнит(назовем его Вася) останавливается, другой проходит(Петей будет), как только место освобождается Вася продолжает движение, но если они с Петей идут в одном направлении то получается что он постоянно останавливается, да и это корректно работает при малом числе юнитов, а если их множество, то все же получается что входят друг в друга некоторые.

Вопрос:
Вообще целесообразно ли реализовывать данную функцию, учитывая, что это шутер с видом сверху, карта не перемещается, тоесть игрок видит сразу весь уровень, соответственно учитывая препятствия там не так много места получается для того чтоб толпились юниты и обходили друг друга. Если их будет много - образуется пробка))), а если мало то может и не очень это будет резать глаза?....
Решать конечно конечным пользователям....но те кому показывал обратили на это внимание. Поэтому все еще хочу реализовать этот алгоритм.

Или стоит ли все переделывать чтобы реализовать алгоритм А*? Какие аргументы за?
Спасибо всем, кто отвечает в этой теме.


Часовой пояс GMT +4, время: 13:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.