Ищите хорошую технику для движения персонажа в игре hack & slash

Я делаю взломанную и слэш-игру, и я хочу, чтобы мои персонажи двигались, например, в Torchlight, Diablo и т. д. В настоящее время я создаю множество узлов для всех охватываемых областей пола. Когда я щелкаю куда-нибудь, игрок идет туда через интерполированный путь узлов. Это не выглядит очень естественным. Игрок движется как робот. Враги также используют эту систему узлов для движения и используют одну и ту же проблему, но у меня есть еще одна проблема с ними. Когда враги обнаруживают игрока, они идут к нему по кратчайшему пути. Иногда они используют один и тот же путь и выстраиваются в линию к игроку, а не к окружающему. Я не знаю, как заставить врагов выбирать разные пути и окружать игрока. Вы знаете, как я могу решить эти проблемы? Может быть, я должен использовать другой подход для движения персонажа?


Моя текущая техника:

введите описание изображения здесь>> </p>

<hr>
<p> Снимок экрана Torchlight: <img src =

51 голос | спросил piotrek 31 Maypm11 2011, 23:38:04

5 ответов


24

Рулевое управление в сочетании с структурой навигационных данных .

Существует несколько способов сделать это, но это основная концепция. Возможно, было бы проще использовать навигационную сетку , чтобы вы могли применять поиск путей в каждом выпуклом разделе.

Если вы настаиваете на сохранении графика, вы можете использовать поведение Seek для каждого узла в пути, а не жестко следуя по пути от узла к узлу.

Другим методом, который вы могли бы использовать, является Сглаживание путей , но имейте в виду, что это довольно вычислительно дорогой.

Надеюсь, что это поможет.

EDIT:

Чтобы помочь в устранении препятствий, используйте Предотвращение препятствий .

ответил Ray Dey 31 Maypm11 2011, 23:58:18
2

В основном для врагов то, что вы хотите сделать, - это сделать поиск пути на макроуровне (подумайте о создании выпуклых областей и пути к области, в которой находится игрок), и выполните некоторые поведения рулевого стиля на уровне микрофона (как только вы «рядом с игроком».

Вот пример поведения boid: http://www.red3d.com/cwr/boids/

Для проигрывателя я думаю, что torchlight выполняет поиск пути в навигационной сетке, где вы нажимаете /перетаскиваете, и это работает очень хорошо. Он может чувствовать себя немного более разъединенным, чем прямой контроль, но это приводит к лучшим результатам для игрока.

ответил Tetrad 31 Maypm11 2011, 23:51:05
2

Если вы предпочитаете придерживаться нодеграфа, а не переключаться на навигационную сетку, как предложили другие, то вы можете решить проблему «line up to the player, а не окружающая его», назначив каждому противнику атаку с определенного направление.

Есть много способов сделать это, но я обычно использую систему «токенов», чтобы назначать уникальные указания монстрам, где объект игрока имеет один токен для каждого направления (север, северо-восток, восток и т. д.). Когда противник хочет перейти к игроку, он должен сначала получить от него токен. Направление, указанное маркером, указывает монстру, с какой стороны игрока разрешено обращать внимание. Поскольку у игрока только один токен для каждого направления, а монстрам нужен токен, прежде чем они смогут атаковать, несколько монстров не будут пытаться перейти к одной и той же стороне проигрывателя, что должно немного разбить их пути.

Кроме того, вы также можете применить небольшое наказание к узлам во время процесса поиска путей, чтобы побудить монстров приблизиться к указанию, которое соответствует маркеру, который у них есть. (То есть, если у монстра есть токен, который позволяет ему атаковать с востока, то для определения «кратчайшего пути» для этого монстра обрабатывайте любые узлы пути, которые находятся на севере /западе /юге от игрока, как если бы они - несколько узлов, а не только один). Это заставит монстров разделить быстрее и попытаться фланкировать игрока, вместо того, чтобы идти к игроку в одиночном файле и только распространяться на последнем шаге.

ответил Trevor Powell 1 J0000006Europe/Moscow 2011, 05:17:56
1

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

ответил Ali1S232 4 J0000006Europe/Moscow 2011, 21:46:53
0

Чтобы маршруты маршрутизации выглядели более «реалистичными», я предлагаю вам ознакомиться с статьей о естественно-выглядящем A * в Game Programming Gems Vol.1

ответил freud 5 J0000006Europe/Moscow 2011, 04:22:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132