Unity第一人称移动+镜头旋转

第一步:

在项目中创建一个胶囊体或导入模型并将相机拖入子层级中,把相机调整至合适的位置

第二步:

给角色添加Character Controller组件,创建一个PlayerMove(脚本名随意取)移动脚本,代码如下:

  //使用前为角色添加CharacterController组件
    public CharacterController player;//角色控制器
    public Camera cameraPlayer;//第一人称镜头
    private float moveSpeed = 2f;//移动速度
    private float gravity = 9.8f;//重力
    private Vector3 player_Vec = Vector3.zero;

    private void FixedUpdate()
    {
        MovePlayerFirst();
    }
    //第一人称视角移动
    private void MovePlayerFirst()
    {
        if (player != null)
        {
            if (player.isGrounded)//角色触地才能移动
            {
                float x = Input.GetAxis("Vertical");
                float y = Input.GetAxis("Horizontal");
                player_Vec = x * cameraPlayer.transform.forward + y * cameraPlayer.transform.right;//根据镜头朝向确定移动方向
            }
            player_Vec.y -= gravity * Time.fixedDeltaTime;//模拟重力
            player.Move(player_Vec * moveSpeed * Time.fixedDeltaTime);
        }
    }

将创建好的代码添加到角色里,如下图所示:

这时运行可发现角色能在场景中前后左右移动,但是无法改变方向。

第三步:

创建一个新的脚本命名为CameraRotation(脚本名自拟),添加以下代码:

  public static Vector3 camera_Vec = Vector3.zero;
  private float cameraRotSpeed = 300f;//旋转速度

    private void Update()
    {
        RotationCamera();
    }
    //旋转相机
    private void RotationCamera()
    {
            float x = Input.GetAxis("Mouse X");
            float y = Input.GetAxis("Mouse Y");
            camera_Vec.x -= y * cameraRotSpeed * Time.deltaTime;
            camera_Vec.y += x * cameraRotSpeed * Time.deltaTime;
            camera_Vec.x = Mathf.Clamp(camera_Vec.x, 0, 60);//限制垂直角度
            transform.rotation = Quaternion.Euler(camera_Vec.x, camera_Vec.y, 0);
    }

把脚本添加到相机中,如下图所示:

运行即可实现完整的第一人称自由移动了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值