第一种 跟随玩家位置 镜头无法旋转
摄像机初始位置与玩家位置需要提前手动设置
image.png
如果相机没有提前设置好 则game界面不能正确看到对象
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour
{
private Transform _playerTransform;
private Vector3 _offset;
// Start is called before the first frame update
void Start()
{
_playerTransform = GameObject.FindWithTag("Player").transform;
_offset = _playerTransform.position - transform.position;
}
// Update is called once per frame
void LateUpdate()
{
transform.position = _playerTransform.position - _offset;
}
}
第二种
这一种方式 让摄像机自动寻找玩家 然后旋转镜头对准玩家
镜头旋转的速度和相机跟随的速度影响 用户的体验
image.png
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour
{
private Transform _playerTransform;
private Vector3 _offset = new Vector3(0, 5, -4); // 相机相对于玩家的位置
private Vector3 _pos;// 相机相对于世界的位置
private float _speedRotate = 20;// 相机旋转的速度
private float _speedMove = 20;// 相机移动的速度
// Start is called before the first frame update
void Start()
{
_playerTransform = GameObject.FindWithTag("Player").transform;
}
// Update is called once per frame
void LateUpdate()
{
_pos = _playerTransform.position + _offset;
// 位移相机
this.transform.position = Vector3.Lerp(this.transform.position, _pos, _speedMove * Time.deltaTime);
// 得到旋转镜头的四元素
Quaternion angel = Quaternion.LookRotation(_playerTransform.position - this.transform.position);
// 旋转相机
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, angel, _speedRotate * Time.deltaTime);
}
}
网友评论