Компоненты Unity для камеры

Camera:

  • Clear Flags — при отрисовке разных элементов игры, определяет какие элементы экрана будут очищены. Применяется при использовании нескольких камер. При использовании одной камеры, можно не изменять.
  • Background — цвет фона. Этот цвет будет применяться в случае отсутствия у камеры компонента «Skybox».
  • Culling Mask — включение и отключение слоев объектов.
  • Projection — определяет, рисовать перспективу или нет.
  • Size — размер камеры.
  • Clipping Planes — два значения, которые определяют, где начинается и заканчивается отрисовка.
  • View Port Rect — необходим для вывода изображения. Четыре координаты, от 0 до 1, по которым определяется в какой части экрана будет выведено изображение.
  • Depth — позиция камеры в очереди на отрисовку. Если используется несколько камер, то камеры с большим значением, будут отрисовываться раньше камер с меньшим значением.
  • Rendering Path — определяет методы рендеринга для камеры.
  • Target Texture — если кто-то знает, подскажите!

Для того что бы камера следовала за игроком, нужно к камере добавить дополнительный компонент (add component) — Script, с кодом, который будет определять свойства следования.

В папке Your-Project\Assets\Scripts, создаем файл C#, с названием «CamFollow», и добавляем такой код:

using UnityEngine;
using System.Collections;

public class CamFollow : MonoBehaviour
{
    public float xMargin = 1f;      // Расстояние по оси x, которое игрок может передвинуть, прежде чем камера пойдет.
    public float yMargin = 1f;      // Расстояние по оси Y, которое игрок может передвинуть до того, как камера последует.
    public float xSmooth = 8f;      // Насколько плавно камера догоняет движение цели по оси x.
    public float ySmooth = 8f;      // Насколько плавно камера догоняет движение цели по оси Y.
    public Vector2 maxXY;        // Максимальные координаты x и y, которые может иметь камера.
    public Vector2 minXY;        // Минимальные координаты x и y, которые может иметь камера.


    private Transform player;       // Ссылка на трансформацию игрока.
    


        void Awake()
    {
        // Настройка ссылки. Ищем объект с именем Player.
        player = GameObject.FindGameObjectWithTag("Player").transform;
    }


    bool CheckXMargin()
    {
        // Возвращает true, если расстояние между камерой и проигрывателем по оси x больше поля x.
        return Mathf.Abs(transform.position.x - player.position.x) > xMargin;
    }


    bool CheckYMargin()
    {
        // Возвращает true, если расстояние между камерой и проигрывателем по оси y больше, чем поле y.
        return Mathf.Abs(transform.position.y - player.position.y) > yMargin;
    }


    void FixedUpdate()
    {
        TrackPlayer();
    }


    void TrackPlayer()
    {
        // По умолчанию координаты x и y камеры являются текущими координатами x и y.
        float targetX = transform.position.x;
        float targetY = transform.position.y;

        // Если игрок вышел за пределы поля x ...
        if (CheckXMargin())
            // ... координата x цели должна быть Lerp между текущей позицией x камеры и текущей позицией x игрока.
            targetX = Mathf.Lerp(transform.position.x, player.position.x, xSmooth * Time.deltaTime);

        // Если игрок вышел за пределы поля y ...
        if (CheckYMargin())
            // ... координата y цели должна быть Lerp между текущей позицией y камеры и текущей позицией y игрока.
            targetY = Mathf.Lerp(transform.position.y, player.position.y, ySmooth * Time.deltaTime);

        // Целевые координаты x и y не должны быть больше максимума или меньше минимума.
        targetX = Mathf.Clamp(targetX, minXY.x, maxXY.x);
        targetY = Mathf.Clamp(targetY, minXY.y, maxXY.y);

        // Установить положение камеры в целевое положение с тем же компонентом z.
        transform.position = new Vector3(targetX, targetY, transform.position.z);
    }
}

В среде разработки Unity, для вашей камеры, добавляем компонент Script (add Component), с названием Cam Follow. Выглядеть он будет следующим образом:

Если обратите внимание, то все свойства, которые Вы видите во вкладке Cam Follow, берутся из скрипта CamFollow.cs:

    public float xMargin = 1f;
    public float yMargin = 1f;
    public float xSmooth = 8f;
    public float ySmooth = 8f;
    public Vector2 maxXY;
    public Vector2 minXY;

Обратите внимание, что все свойства обозначены, как public. Если свойства обозначить как private (приватные), то они не будут отображаться во вкладке Cam Follow.

Добавить комментарий