(关于其他几种角色移动的控制在我之前的博客有写到)
首先我们需要先理解一下第三人称相机控制的原理:
我们要实现的效果就是:获取鼠标的移动输入,转化成角色以及相机的旋转,通过鼠标输入Input.GetAxis(“Mouse X”)让相机围绕目标角色旋转(transform.RotateAround)角色通过相机改变的角度改变自身方向(Quaternion.Euler)。
那么先介绍一下transform.RotateAround(目标物体位置,轴,旋转角度)方法,这个方法是让自身围绕目标物体旋转,所以我们用
float inputX = Input.GetAxis("Mouse X");
float inputY = Input.GetAxis("Mouse Y");
transform.RotateAround(CameraPivot.transform.position, Vector3.up, rotateSpeed * inputX);
transform.RotateAround(CameraPivot.transform.position, TargetBody.transform.right, -rotateSpeed * inputY);
CameraPivot是相机的焦点物体(最好是设置角色的头部);
然后 我们将相机的这个旋转角度记录下来(transform.localEulerAngles),并且用Quaternion.Euler改变角色的面向;
Quaternion TargetBodyCurrentRotation = TargetBody.transform.rotation;
TargetBody.transform.rotation = Quaternion.Lerp(TargetBodyCurrentRotation, Quaternion.Euler(new Vector3(TargetBody.transform.localEulerAngles.x, transform.localEulerAngles.y, TargetBody.transform.localEulerAngles.z)), TargetBodyRotateLerp);
为了方便理解,给大家画一个示意图:
下面给大家简单操作一下!
还是先创建一个新的场景,里面添加一个plane和一个cube并且调整一下相机位置:
然后上代码!把代码加载摄像机上:
using System.Collections;
using System.Collections.