unity制作第三人称移动控制脚本
一个简单的第三人称角色移动脚本>>
这里面的镜头控制我是用了unity自带的镜头插件Cinemachine,打开window->PackageManager,在All packages下找。
建一个简单的角色,添加初始镜头。
此时,点击运行,就可以通过鼠标控制镜头视角。不过效果并不好,接下来调整摄像机的数据。
-
相机的活动范围
-
让角色动起来
首先在新建的角色上添加组件CharacterController。然后添加一个脚本命名为ThirdPerson(名字自定义)。
ThirdPerson脚本代码:
/**
这里是通过角色控制器CharacterController来控制角色的移动
**/
public CharacterController P_controller;
public Transform N_camera;
public float P_speed = 6f;//角色移动速度
public float N_trunSnoothTime = 0.1f;//角色转身缓冲时间
float N_trunSmoothVelocity;
private void Update()
{
float N_horizontal = Input.GetAxisRaw("Horizontal");
float N_vertical = Input.GetAxisRaw("Vertical");
Vector3 P_direction = new Vector3(N_horizontal, 0, N_vertical).normalized;
if (P_direction.magnitude >= 0.1f) {
float N_targetAngle = Mathf.Atan2(P_direction.x, P_direction.z) * Mathf.Rad2Deg+N_camera.eulerAngles.y;
float N_angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, N_targetAngle, ref N_trunSmoothVelocity, N_trunSnoothTime);
transform.rotation = Quaternion.Euler(0f, N_angle, 0f);
Vector3 N_moveDir = Quaternion.Euler(0f, N_targetAngle, 0f) * Vector3.forward;
P_controller.Move(N_moveDir.normalized * P_speed * Time.deltaTime);
}
}
写好代码保存返回unity,将CharacterController组件和主摄像机拖拽到相应的位置:
此时运行,就可以通过WSAD移动角色啦。
- 最后优化:给摄像机添加碰撞检测,目的是防止有遮挡物挡住镜头看不到角色
到此,第三人称移动控制算是完成了。我是Pex-叶巴适!一只小菜鸟。这算是我学习的笔记,可能有不足之处,可以在下方留言,大家一起学习!^_^。