这是我作为初学者学习出来的一个实现人物移动和镜头跟随的办法,那来看看我是怎么学习的
目录
一、镜头根据鼠标输入进行旋转
首先我们在Unity中建一个空物体(Photographer)坐标就设为(0,0,0),然后将摄像机作为我们的空物体的子物体Transform改为(0,0,-10),这样代表摄像机的这个子物体的局部位移往后平移10个单位,这样之后我们在旋转空物体(Photographer)的时候就有一个摄像机围绕它旋转的效果。
我们应该知道Unity的蓝色箭头是Z,绿色箭头是Y,红色箭头是X。
接下来就是给空物体(Photographer)新建一个脚本了C#命名为Photographer。
如果我们绕着X轴旋转,那么视角就是一个上下的效果。如果我们绕着Y轴旋转,那么视角就是一个左右的旋转。所以我们定义两个属性Pitch和Yaw分别代表X轴旋转和绕着Y轴旋转的旋转量是多少。
然后我们的旋转是有灵敏度的,我们再定义一个mouseSensitivity来控制旋转的灵敏度,具体就是给它一直值去乘我们通过Input.GetAxis("Mouse X")获取的变化量,这里Mouse X本身就是个变化量,乘上一个数值就是用来扩大获缩小它变化本身的值。(这里如果是手柄输入的话就不是这样了,手柄是一个渐进的过程,有兴趣的小伙伴可以去研究一下)
接下来我们写一个方法UpdateRotation来实现旋转,然后我们人在左右时可以控制我们的身体旋转在得到360度的视角,而上下只能控制我们的头抬起或者俯看,不可能头能上下旋转360度吧,所以我们的在绕着X轴旋转也就是视角上下的时候是有角度限制的,我们用到了Mathf.Clamp()来限制上下的角度,最后将我们Pitch和Yaw设为欧拉角的X和Y,也就是Quaternion.Evler(Pitch,Yaw,0)赋值给transform.rotation。然后将函数放到Update里运行。
(+=我的理解是一个累加的过程。Yaw和Input.GetAxis("Mouse X")这里我都理解是一个数。Yaw累加了我们输入的每一个Input.GetAxis("Mouse X")的数)
这样我们就实现了基本的上下左右视角啦。这里有可能上下的方向是反的,把Mouse X的invert勾上就可以啦。