Автор Тема: Движение противника к ГГ  (Прочитано 1874 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Февраль 12, 2012, 19:29:53 pm
Прочитано 1874 раз

Ru_lon

  • Активный участник

  • Оффлайн
  • ****

  • 390
  • Репутация:
    9
    • Просмотр профиля
 Заставить противников двигаться к игроку есть множество способов. Если противники должны просто следовать за игроком по прямой, можно использовать следующий код:
if instance_exists(объект_игрока)
{
    if point_distance(x, y, объект_игрока.x, объект_игрока.y) > скорость_движения
    {
        move_towards_point(объект_игрока.x, объект_игрока.y, скорость_движения); // Двигаемся к игроку
    }
    else
    {
        x = объект_игрока.x;
        y = объект_игрока.y;
    }
}
Условие "if instance_exists(объект_игрока)" нужно для того, чтобы не появлялась ошибка, когда объекта игрока почему-то нет (например, когда он был удалён после смерти). Проверка point_distance требуется для того, чтобы противник не мог пройти позицию цели. К примеру, если скорость противника - 10 пикселей, а цель находится от него на расстоянии в два пикселя, то он попросту проскочит её, сдвинувшись на 10 пикселей в направлении цели. С проверкой он сдвинется точно к позиции цели, не перескакивая её.

Если противники должны двигаться к игроку, огибая стены, можно использовать следующий код:
if instance_exists(объект_игрока)
{
    if point_distance(x, y, объект_игрока.x, объект_игрока.y) > скорость_движения
    {
        mp_potential_step(объект_игрока.x, объект_игрока.y, скорость_движения, checkall);
    }
    else
    {
        x = объект_игрока.x;
        y = объект_игрока.y;
    }
}

О значении последнего аргумента (checkall) читайте в справке.
Сильное государство угнетает нас, при слабом государстве погибаем мы сами.

Июль 03, 2012, 00:12:46 am
Ответ #1

Mobster

  • Пользователь

  • Оффлайн
  • **

  • 40
  • Репутация:
    0
    • Просмотр профиля
хорошо расписал, молодец)))