unity3d-第三人称移动控制脚本

一个简单的第三人称角色移动脚本>>

这里面的镜头控制我是用了unity自带的镜头插件Cinemachine,打开window->PackageManager,在All packages下找。
Alt

建一个简单的角色,添加初始镜头。

在这里插入图片描述
此时,点击运行,就可以通过鼠标控制镜头视角。不过效果并不好,接下来调整摄像机的数据。

  1. 相机的活动范围 在这里插入图片描述
    在这里插入图片描述

  2. 让角色动起来
    首先在新建的角色上添加组件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移动角色啦。

  1. 最后优化:给摄像机添加碰撞检测,目的是防止有遮挡物挡住镜头看不到角色
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

到此,第三人称移动控制算是完成了。我是Pex-叶巴适!一只小菜鸟。这算是我学习的笔记,可能有不足之处,可以在下方留言,大家一起学习!^_^。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值