キャラクターをフォローするUnity3Dシーンカメラ

3Dシーンカメラがキャラクターを追跡します

2Dシーンと3Dシーンの追従は異なりますが、一部は同じです。3Dシーンでのキャラクターの回転方向により、カメラがキャラクターの方向と常に一致するとは限らないため、面倒です。だからここにあなたを助けるためのかなり良い方法があります。
効果は次のとおりです。
カメラフォロー
効果は、カメラが常にオブジェクトの背後にあり、オブジェクトが常にゲームシーンの中央にあることです。
コードは次のように表示されます。

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,不会丢失目标
    }
}

リンク:TransformDirection(distance)

このようにすると、カメラをオブジェクトに向けるだけで、オブジェクトを常に中央に配置したくないので、ぎこちなく感じるかもしれません。次の解決策を解決できます。
オブジェクトは中央だけではありません

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;//没错,只需让镜头的旋转方向和物体的一直就可以了,摄像机的位置自己定义
    }
}

個人的には、コードはとてもシンプルで、理解しやすく、とても使いやすいと感じています。気に入っていただければ幸いです。

おすすめ

転載: blog.csdn.net/m0_48554728/article/details/115334638