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.