运用插值运算
transform.position = Vector3.Lerp(transform.position, newPos, Time.deltaTime * moveSpeed);
Quaternion oldRotation = transform.rotation;
transform.LookAt(player_transform.position);
transform.rotation = Quaternion.Lerp(oldRotation, transform.rotation, Time.deltaTime * rotateSpeed);
1.最简单,无代码,固定距离,固定视角
最简单的就是 直接 把主相机作为Player角色的子物体,并自行固定好相机的位置和角度
优点:使用方便
缺点:使用不灵活,相机转动死板,体验不好,相机瞬间移动位置
2.代码控制,固定距离,固定视角,直接移动,不会旋转
使用代码获取到一个相机的初始位置与人物之间的差值向量,在给相机赋值时再用这个差值向量与人物坐标求出相机的实时位置如下
public class CameraTest2 : MonoBehaviour{
public Transform player;
Vector3 distance;
void Start(){
distance = transform.position - player.position;
}
void LateUpdate(){
transform.position = player.position + distance;
}
}
3.代码控制,固定距离,固定视角,平滑阻尼移动
public class CameraTest2 : MonoBehaviour{
public Transform player;
Vector3 distance;
public float speed;
Vector3 ve;
void Start(){
distance = transform.position - player.position;
}
void LateUpdate(){
transform.position = Vector3.SmoothDamp(transform.position, player.position + distance, ref ve, 0);
}
}