写在前面:
研究了一下 unity 的第一人称控制器后,把他自带的 Mouse Look 脚本做了简化。这样代码看上去更简单明了。记录下来,以备以后再用到。所以,这是一个没啥营养的文。
第一人称视角实验:
1,搭建一个实验场景:1个摄像机,1个平面,1个正方体(作为参照物),1个胶囊体(作为主角),1个点光源。
2,把摄像机放到胶囊体上,摆好高度(相当于第一人称的眼睛),如下图:
3,新建一个脚本,作为相机的控制脚本(其实这个脚本就是Mouse Look.cs 脚本,做了删减)。脚本如下:
using UnityEngine; using System.Collections; public class FirstView : MonoBehaviour { //方向灵敏度 public float sensitivityX = 10F; public float sensitivityY = 10F; //上下最大视角(Y视角) public float minimumY = -60F; public float maximumY = 60F; float rotationY = 0F; void Update () { //根据鼠标移动的快慢(增量), 获得相机左右旋转的角度(处理X) float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; //根据鼠标移动的快慢(增量), 获得相机上下旋转的角度(处理Y) rotationY += Input.GetAxis("Mouse Y") * sensitivityY; //角度限制. rotationY小于min,返回min. 大于max,返回max. 否则返回value rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); //总体设置一下相机角度 transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); } void Start () { // Make the rigid body not change rotation if (rigidbody) rigidbody.freezeRotation = true; } }
4,把这个脚本放到相机上。ok。
总结:视角的控制,其实很简单。主要是控制:旋转、以及输入设备的增量(比如,鼠标移动的快,视角转动的也要快)。