Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Все Гайды Мой Кабинет

Преследование вражеского персонажа за игроком

В данной статье мы реализуем искусственный интеллект вражеского персонажа, который будет постоянно преследовать нашего игрока. Первым делом, необходимо создать 2 игровых объекта, с названиями, например Player - наш игрок, и Enemy - вражеский персонаж.

Далее необходимо добавить объекту Player тег Player.

Далее создаём файл типа C# скрипт, и дадим ему название, например, Follow. Пропишем в данном скрипте следующий C# код:

using UnityEngine;

public class Follow : MonoBehaviour
{
    public float speed = 5f;
    public Transform player;

    void Awake()
    {
        player = GameObject.FindGameObjectWithTag(“Player”).GetComponent<Transform>();
    }

    
    void FixedUpdate()
    {
        transform.position = Vector2.moveTowards(transform.position, player.position, speed);
    }
}

Весь данный скрипт присваиваем к объекту вражеского персонажа, ведь именно он должен перемещаться к нашему Игроку. Поздравляем, искусственный интеллект персонажа, который перемещается к вашему объекту создан!

Давайте теперь разберём данный c# код поподробне:

public float speed = 5f;
public Transform player; 

Здесь мы объявляем две переменные. Переменная speed необходима для указания скорости, с которой вражеский персонаж будет двигаться к Игроку. Переменная player будет хранить информацию о местоположении нашего Игрока.

Далее в методе Awake() мы прописываем следующий код:

player = GameObject.FindGameObjectWithTag(“Player”).GetComponent<Transform>();

Здесь мы находим объект нашего игрока по тегу Player, и заносим данные о его местоположении в переменную player. Благодаря этой строчке кода, вражеский персонаж теперь будет понимать, где находится игрок.

Ну и в завершении, в методе FixedUpdate() мы с помощью класса Vector2 обновляем местоположение нашего врага, который с помощью метода moveTowards будет постепенно смещаться к местоположению нашего Игрока со скоростью speed:

transform.position = Vector2.moveTowards(transform.position, player.position, speed); 

Если данный гайд был полезен для Вас, не забывайте оставлять свои лайки.

Вы можете отблагодарить автора донатом. ₽ Спасибо

Комментарии

2
kessyamessya 4 месяца назад

Извините а такой вопрос выдает в коде ошибку "Vektor2" не содержит определение для "moveTovards" (я тоже новичок в юнити) Как решить эту ошибку???

Name_1009 4 месяца назад

kessyamessya, чел Vector2. Ты опечатался

Гости не могут оставлять комментарии. Войдите на Сайт или Зарегистрируйтесь