【Unity】实现相机视角跟随
在U3D项目中实现相机永远跟随玩家,是玩家模型保持在镜头最中间
方法一
private Transform player;
//玩家和相机的差
private Vector3 offset;
//相机移动速度
private float speed = 3;
// Start is called before the first frame update
void Start() {
player = GameObject.FindGameObjectWithTag("Player").transform;
offset = transform.position - player.position;
}
// 更新相机位置
void LateUpdate() {
//世界坐标转化为局部坐标
Vector3 targetPosition = player.position + player.TransformDirection(offset);
//移动相机
transform.position = Vector3.Lerp(transform.position, targetPosition, speed * Time.deltaTime);
//相机看向玩家的方向
transform.LookAt(player.position);
}
方法二
新增方法二
public Transform target;
[SerializeField]
private float distance = 10f;//相机与目标距离
[SerializeField]
private float height = 5f;//相机高度
[SerializeField]
private float rotationDamping;//旋转调整速度
[SerializeField]
private float heightDamping;//高度调整速度
private void Start()
{
}
private void LateUpdate()
{
if ((bool)target)
{
float y = target.eulerAngles.y;
float b = target.position.y + height;
float y2 = base.transform.eulerAngles.y;
float y3 = base.transform.position.y;
y2 = Mathf.LerpAngle(y2, y, rotationDamping * Time.deltaTime);
y3 = Mathf.Lerp(y3, b, heightDamping * Time.deltaTime);
Quaternion quaternion = Quaternion.Euler(0f, y2, 0f);
base.transform.position = target.position;
base.transform.position -= quaternion * Vector3.forward * distance;
base.transform.position = new Vector3(base.transform.position.x, y3, base.transform.position.z);
base.transform.LookAt(target);
}
}
本文来自博客园,作者:星空探险家,转载请注明原文链接:https://www.cnblogs.com/PuppetLazy/p/17840911.html

浙公网安备 33010602011771号