@chinpokomon

Как реализовать перемещение юнитов и их взаимодействие друг с другом?

Доброго времени суток. Пишу игру на SDL2 + C++. Сейчас уже есть локация в виде сетки из тайлов и спрайтовая анимация. Размер юнита равен размеру клетки карты. Для расчета использую A* алгоритм. Проблема в том, что перемещаться нужно на меньшее расстояние, чем размер тайла/сетки. Как сделать так, чтобы движение было плавным? И еще вопрос. Как правильно сделать взаимодействие между юнитами? Сейчас я это так представляю:
1. Переключаю анимацию на "анимация атаки".
2. Жду когда анимация достигнет последнего кадра.
3. Рассчитываю урон и т.д.
Можно ли это сделать более грамотно?
  • Вопрос задан
  • 586 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C++
Грамотно было бы разбить этот вопрос на несколько и указать для каждого необходимые детали, либо выбросить из него всю шелуху и оставить что-то одно.

Чтобы движение было плавным, нужно плавно анимировать это движение (т.е. перерисовывать положение и внешний вид объекта N раз в секунду).
Процесс взаимодействия между юнитами зависит от архитектуры вашей игры и ее целевого функционала. Если это сингл-плеер, то я думаю не всегда хорошо дожидаться конца анимации, чтобы рассчитать урон (например, для игрока вполне естественно обнаружить нанесение урона в момент когда его меч коснется противника, а не когда закончит движение). Если это сетевая игра, то у вас есть интересная и непростая задача компенсации пинга.
Если вам кажется, что я изображаю капитана Очевидность, то вам нужно задать более точные и конкретные вопросы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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