В данной статье мы реализуем искусственный интеллект вражеского персонажа, который будет постоянно преследовать нашего игрока. Первым делом, необходимо создать 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);
Если данный гайд был полезен для Вас, не забывайте оставлять свои лайки.
Извините а такой вопрос выдает в коде ошибку "Vektor2" не содержит определение для "moveTovards" (я тоже новичок в юнити) Как решить эту ошибку???