using UnityEngine;
using System.Collections;
public class SmootFollow : MonoBehaviour {
public Transform target; //要 跟随拍摄的 人物
public float distance = 10.0f; //摄像机跟人物之间的距离
public float height = 5.0f; //摄像机的高度
public float heightDamping = 2.0f;
public float rotationDamping = 3.0f; //旋转阻力
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
void LateUpdate()
{
if(!target)
{
return;
}
float wantedRotationAngle = target.eulerAngles.y;
float wantedHeight = target.position.y + height;
float currentRotationAngle = transform.eulerAngles.y;
float currentHeight = transform.position.y;
//lerp 插值, 在t时间内,从 currentRotationAngle到wantedRotationAngle中间每个时间的值,接近,,,
currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
currentHeight = Mathf.Lerp(currentHeight, wantedHeight, heightDamping * Time.deltaTime);
//这个直接等于1 摄像机不会总是照射主角的背后
float currentRotation = 1;
//如果 注视掉上面,改成下面的,则照相机一直照射主角的背后 ,这里就是 人旋转了角度 ,摄像机也跟着旋转了角度, 让他等于1 则摄像机不会跟着旋转角度,就不会一直照射人的背影
//Quaternion currentRotation = Quaternion.Euler(0, currentRotationAngle, 0);
transform.position = target.position;
transform.position -= currentRotation * Vector3.forward * distance;
//transform.position.Set(transform.position.x, currentHeight, transform.position.z); //这里用这个 set不可以 ,也没有报错,刚学两天可能有些东西还不懂,先记下
transform.position = new Vector3(transform.position.x, currentHeight, transform.position.z);
transform.LookAt(target);
}
}
摄像机跟随人拍照
最新推荐文章于 2023-09-06 19:38:19 发布