2013-10-26 3 views
0

Я использую slick2d, чтобы создать своего рода open-world rogue как RPG. Мне интересно, какой метод я мог бы использовать для перемещения и анимации нескольких монстров, в нескольких комнатах, в то время как я хожу из комнаты в комнату, делая что угодно. У меня есть метод, но я чувствую, что он Чрезвычайно неэффективен и даже не работает правильно. (включает константу для цикла, которая управляет движением монстров x и y и имеет проблемы с анимацией в одно и то же время)Slick2d, независимое движение монстра

Любая помощь будет оценена, спасибо. Я просто прошу метод в словах, но любые фрагменты кода в виде псевдокода или маленьких jiblets будут полезны EXTREMLEY.

ответ

0

Храните список монстров, которые являются «активными» - достаточно близко, чтобы потенциально быть видимыми или активными вне поля зрения - в отличие от «подвешенных» монстров вдали от мира.

Когда игрок пересекает границу «грубой сетки» (скажем, каждые 64-128 пикселей или что-то еще), обновите «активный» список. Монстры, к которым теперь приближается игрок, перейдут в активный список, монстры, оставшиеся у игрока, покинут активный список.

«Спящий» монстр может быть сохранен в виде карты или мультимапа с помощью «грубой сетки».

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

Когда игрок на самом деле видит монстра снова, он должен был иметь возможность быть активным «с глаз долой», двигаться, сражаться с другими монстрами и т. Д., Тем самым давая видимость того, что он был активным все время.

Чтобы дать монстрам наибольшую способность «прокрасться» и подойти к игрокам сзади, вы можете установить «активный диапазон» как минимум в 2,5 раза на расстояние видимости игрока, возможно, больше. Это, в сочетании с диапазоном алгоритмов поиска пути, в том числе скрытой (держаться подальше от зрителя), может помочь сделать их действительно сложными противниками.

Смежные вопросы