关闭

摄像机跟随人拍照

684人阅读 评论(0) 收藏 举报
分类:
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);
	}
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:139007次
    • 积分:2203
    • 等级:
    • 排名:第17167名
    • 原创:72篇
    • 转载:75篇
    • 译文:0篇
    • 评论:5条
    文章分类
    最新评论