using UnityEngine;
public class Test : MonoBehaviour
{
public float distanceAway = 5; //距离
public float distanceHigh = 2; //相对高度
public float moveSpeed = 3; //相机移动速度
public Transform Target;
void Start() { }
void LateUpdate()
{
//Follow1();
Follow2();
}
//1、始终跟随在玩家后方
void Follow1()
{
Vector3 targetPosition = Target.position + Vector3.up * distanceHigh - Target.forward * distanceAway;
transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * moveSpeed);
transform.LookAt(Target);
}
//2、不根据玩家朝向改变,可以改变Angle选择观察角度
public float rollAngle = 30f * Mathf.PI * 2 / 360; //摄像机朝向与XZ平面角度
public float Angle = 0; //摄像机朝向与YZ平面角度
void Follow2()
{
Vector3 cameraPos;
float dis = distanceAway * Mathf.Cos(rollAngle);
float height = distanceAway * Mathf.Sin(rollAngle);
cameraPos.x = Target.position.x + dis * Mathf.Cos(Angle);
cameraPos.z = Target.position.z + dis * Mathf.Sin(Angle);
cameraPos.y = Target.position.y + height;
transform.position = Vector3.Lerp(transform.position, cameraPos, Time.fixedDeltaTime * moveSpeed);
transform.LookAt(Target);
}
}