固定相机跟随:offsetPosition:相机与物体相差位置
{void Start () {
offsetPosition = transform.position - player.position;}
void Update () {transform.position = offsetPosition + player.position;}}
相机放大或缩小:
{
public float distance = 0;
distance = offsetPosition.magnitude;//相机为物体相差的距离大小
distance -= Input.GetAxis("Mouse ScrollWheel") * scrollSpeed;//大小加或者减去鼠标滑轮滚动的数值
distance = Mathf.Clamp(distance, 4, 18);//限制距离的最大值和最小值
offsetPosition = offsetPosition.normalized * distance;//相机的最终距离(物体为点A相机为点B,向量AB等于向量AB的摸长乘向量AB的单位向量,向量AB的单位向量模长乘角度)
}
相机跟随的旋转:
transform.RotateAround(player.position, player.up,rotateSpeed*Input.GetAxis("Mouse X"));//相机以player.up旋转
Vector3 originalPos = transform.position;
Quaternion originalRotation = transform.rotation;
transform.RotateAround(player.position,transform.right ,-rotateSpeed*Input.GetAxis("Mouse Y"));//相机以自身旋转
float x = transform.eulerAngles.x;
if (x<10 || x>80)
{
transform.position = originalPos;
transform.rotation = originalRotation;
}
}
offsetPosition = transform.position - player.position;