第一人称摄像机控制
源代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FPMouseLook : MonoBehaviour
{
private Transform cameraTransform;
private Vector3 cameraRotation;
public float MouseSensitivity;
public Vector2 MaxminAngle;
void Awake()
{
cameraTransform = this.GetComponent<Transform>();
cameraRotation = Vector3.zero;
}
void Start()
{
}
void Update()
{
cameraRotation.y += Input.GetAxis("Mouse X") * MouseSensitivity;
cameraRotation.x -= Input.GetAxis("Mouse Y") * MouseSensitivity;
cameraRotation.x = Mathf.Clamp(cameraRotation.x,MaxminAngle.x,MaxminAngle.y);
cameraTransform.rotation = Quaternion.Euler(cameraRotation);
}
}
笔记
- 摄像机转动和身体转动是独立的,但是如果摄像机是身体的子物体,那么摄像机和身体的相对位置不会改变
- 抬头仰头必须有个角度限制不然会360°的旋转,正常人做不到这样,很不真实有两种实现方法:
if(cameraRotation.x <= -65)
cameraRotation.x = -65;
if(cameraRotation.x >= 65)
cameraRotation.x = 65;
cameraRotation.x = Mathf.Clamp(cameraRotation.x,MaxminAngle.x,MaxminAngle.y);