【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);
			}
		}
posted @ 2023-04-04 15:00  星空探险家  阅读(48)  评论(0)    收藏  举报  来源