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

78
01 февраля 2022, 02:30

Как сделать так, чтобы камера не флипалась (поворачивалась) вместе с персонажем, но перемещалась за с ним?

Answer 1

самое простое это поместить камеру в другой пустой объект немного изменить координату Z. Этот объект, с камерой внутри, уже будет следовать за персонажем. Смысл в том, что этот объект (я бы назвал CameraRig) , будет выполнять функцию крана камеры, камера будет в нем и при его поворотах будет смотреть его центр.

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

public class CameraRig : MonoBehaviour
{
    [SerializedField] private Transform character;
    [SerializedField] private float smoothTime = 1.5; //примерно
    private Vector3 vel;
    private void Update()
    {
        transform.position = Vector3.SmoothDamp(transform.position, character.position, ref vel, smoothTime); //плавно перемещает камеру в точку координату персонажа
        transform.forward = Vector3.SmoothDamp(transform.forward, character.forward, ref vel, smoothTime); //плавно перемещает forward (поворачивает) cameraRig чтобы смотреть в то же место, куда и персонаж.
        //можно еще иметь ссылку на саму камеру и сделать что-то типа
        cam.transform.LookAt(character.position); // смотрит на персонажа
        // ну также можно сюда засунуть облет препятствий, например, если сзади стена, то подлетаешь камерой (делаешь Z меньше) к персонажу
    }
}

Это просто начало. То, что я здесь описал довольно примитивно. Дальше уже зависит от того, что ты хочешь. Кстати, можно вместо SmoothDamp использовать Lerp или MoveToward .. зависит от того, какой поведение тебе нужно. Можно даже использовать пакет Unity Cinemachine , если тебе нужно что-то из коробки

READ ALSO
Передать DependencyProperty UserControl всем дочерним UserControl

Передать DependencyProperty UserControl всем дочерним UserControl

Есть 3 UserControl, вложенных друг в другаДля старшего UserControl прописаны DependencyProperty - цвет элементов, которые будут задаваться в разметке и привязываться...

155
Скрипт не видит rigidbody

Скрипт не видит rigidbody

Делаю скрипт для перемещения персонажа по урокам в интернетеЗастрял на моменте прыжка

178
Один проект является поддоменом другим?

Один проект является поддоменом другим?

MVC CORE 21; У меня есть два проекта Web ( основной проект, в нём есть форум, блог

156
Источник данных. Не видит нового поля

Источник данных. Не видит нового поля

Добавил в объект новое поле, объект используется как источник данных для RDL отчета, приложение на winformsИспользовал все доступные мне танцы...

89