🏠 Главная

🚀 Методы Unity API

Что такое методы Unity API?
Это готовые «команды» от Unity, которые позволяют взаимодействовать с игровыми объектами: создавать, перемещать, включать или удалять их. Вместо того чтобы писать всё с нуля, ты просто вызываешь нужный метод — как волшебное слово, которое запускает действие.

В предыдущем уроке мы научились получать доступ к компонентам объектов. Теперь мы сделаем шаг дальше — начнём вызывать у объектов действия: создавать, двигать, включать и уничтожать их.

🧱 Создание объектов: Instantiate()

Метод Instantiate() позволяет создавать копии заранее подготовленных объектов — префабов. Это основа для появления пуль, врагов, монеток и любых динамических элементов.

Префаб — это шаблон объекта. Создаётся один раз, а потом используется многократно.


using UnityEngine;
using UnityEngine.InputSystem;

public class Spawner : MonoBehaviour
{
    // Переменная для хранения префаба
    public GameObject cubePrefab;

    // Update вызывается каждый кадр
    void Update()
    {
        // Если нажата клавиша пробела
        if (Keyboard.current.spaceKey.wasPressedThisFrame)
        {
            // Создаём новый объект из префаба
            Instantiate(cubePrefab, new Vector3(0, 1, 0), Quaternion.identity);
        }
    }
}

💡 Более подробно о префабах мы поговорим в отдельных туториалах — там ты узнаешь, как их создавать, настраивать и использовать в реальных проектах.

🚶 Перемещение объектов: transform.Translate()

Чтобы сдвинуть объект в пространстве, используют метод Translate(). Он перемещает объект на заданное расстояние.

Time.deltaTime помогает сделать движение плавным и не зависящим от количества кадров в секунду.


using UnityEngine;

public class Mover : MonoBehaviour
{
    // Скорость движения
    public float speed = 3f;

    // Update вызывается каждый кадр
    void Update()
    {
        // Двигаем объект вправо со скоростью speed
        transform.Translate(Vector3.right * speed * Time.deltaTime);
    }
}

🎮 Управление игроком: движение влево и вправо

Теперь добавим самое важное — управление. Будем двигать объект влево и вправо с помощью клавиш A/D или стрелок ← →. Метод Translate() отлично подойдёт для этого.


using UnityEngine;
using UnityEngine.InputSystem;

public class PlayerController : MonoBehaviour
{
    // Скорость движения
    public float speed = 5f;

    // Update вызывается каждый кадр
    void Update()
    {
      float x = 0f;
        // Получаем направление от клавиш (A/D или стрелки)
        if (Keyboard.current != null)
        {
            if (Keyboard.current.aKey.isPressed || Keyboard.current.leftArrowKey.isPressed)
                x -= 1f;
            if (Keyboard.current.dKey.isPressed || Keyboard.current.rightArrowKey.isPressed)
                x += 1f;
        }

        // Двигаем объект по оси X
        transform.Translate(Vector3.right * x * speed * Time.deltaTime);
    }
}

💡 В новом Input System мы напрямую проверяем нажатые клавиши. При нажатии влево (A или ) направление равно -1, при нажатии вправо (D или ) — +1. Если ни одна клавиша не нажата, значение остаётся 0.

⚡ Реакция на триггеры 2D

Иногда тебе нужно, чтобы объект что-то делал при столкновении — например, собирал монетку или включал портал. Для этого в Unity есть метод OnTriggerEnter2D.

Он вызывается автоматически, если у объекта есть коллайдер с флажком Is Trigger, и он сталкивается с другим объектом, у которого есть Rigidbody2D.


using UnityEngine;

public class TriggerExample : MonoBehaviour
{
    // Этот метод вызывается, когда объект входит в триггер
    void OnTriggerEnter2D(Collider2D other)
    {
        // Выводим имя объекта, с которым столкнулись
        Debug.Log(\"Вошли в триггер с: \" + other.name);
    }
}

💡 Убедись, что у этого объекта есть BoxCollider2D или другой коллайдер с включённым Is Trigger, а у второго — Rigidbody2D.

👁 Скрытие объектов: SetActive()

Если нужно временно убрать объект из сцены, не уничтожая его — используй SetActive(false).


using UnityEngine;

public class Hider : MonoBehaviour
{
    // Start вызывается один раз при запуске объекта
    void Start()
    {
        // Выключаем объект через 3 секунды
        Invoke("Disable", 3f);
    }

    // Метод, который отключает объект
    void Disable()
    {
        gameObject.SetActive(false);
    }
}

💥 Удаление объектов: Destroy()

Чтобы полностью убрать объект из сцены, используется Destroy(). Это полезно для временных объектов: пуль, эффектов, врагов.


using UnityEngine;

public class SelfDestruct : MonoBehaviour
{
    // Start вызывается один раз при запуске объекта
    void Start()
    {
        // Удаляем объект через 5 секунд
        Destroy(gameObject, 5f);
    }
}

💡 Можно вызывать Destroy() без второго параметра, чтобы удалить объект немедленно.

📌 Подведём итоги

Сегодня мы познакомились с базовыми методами Unity API — они помогут тебе создавать объекты, двигать их, скрывать и удалять. Эти действия встречаются почти в каждой игре.

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

А значит, ты готов перейти от основ — к созданию настоящих игровых механик. Увидимся в первом проекте!