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;//没错,只需让镜头的旋转方向和物体的一直就可以了,摄像机的位置自己定义
}
}
個人的には、コードはとてもシンプルで、理解しやすく、とても使いやすいと感じています。気に入っていただければ幸いです。