Cámara de escena Unity 3D para seguir a los personajes

La cámara de escena 3D sigue al personaje

La escena 2d y la escena 3D siguen de manera diferente, pero algunas de ellas siguen siendo las mismas. Es problemático porque la dirección de rotación del personaje en la escena 3D hace que la cámara no siempre coincida con la dirección del personaje. Así que aquí tienes una buena forma de ayudarte.
El efecto es el siguiente: El
Seguimiento de cámara
efecto es que la cámara siempre está detrás del objeto y el objeto siempre está en el centro de la escena del Juego.
el código se muestra a continuación:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    
    
    public float cameraSpeed = 5f;
    private Vector3 distance;
    private Transform Player;

    private void Start()
    {
    
    
        Player = GameObject.Find("Cube1").transform;
        distance = Player.position - transform.position;
    }


    private void LateUpdate()//写在这防抖动
    {
    
    
        
            Vector3 newTrans = Player.position - Player.TransformDirection(distance);//这里主要是算到player的世界坐标,这样可以和跟随物体的方向一致。
            transform.position = Vector3.Lerp(transform.position, newTrans, cameraSpeed);
            transform.LookAt(Player);//这里就是让摄像机朝向player,不会丢失目标
    }
}

Enlace: TransformDirection (distancia) .

De esta manera, es posible que se sienta incómodo, porque solo desea que la cámara mire hacia el objeto, pero no desea que el objeto esté siempre en el medio. Se pueden resolver las siguientes soluciones:
El objeto no está solo en el centro

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    
    
    public float cameraSpeed = 5f;
    private Vector3 distance;
    private Transform Player;

    private void Start()
    {
    
    
        Player = GameObject.Find("Cube1").transform;
        distance = Player.position - transform.position;
    }


    private void LateUpdate()//写在这防抖动
    {
    
    
        
            Vector3 newTrans = Player.position - Player.TransformDirection(distance);
            transform.position = Vector3.Lerp(transform.position, newTrans, cameraSpeed);
            transform.rotation = Player.rotation;//没错,只需让镜头的旋转方向和物体的一直就可以了,摄像机的位置自己定义
    }
}

Personalmente siento que el código es muy simple, fácil de entender y muy útil, espero que les guste.

Supongo que te gusta

Origin blog.csdn.net/m0_48554728/article/details/115334638
Recomendado
Clasificación