【Unity第一人称视角控制脚本】不用再找了,收藏这篇这辈子就够了!

 

程序原理概述

这个程序实现了一个第一人称视角的角色控制脚本。主要功能包括:

  1. 前后移动:通过按下 W 和 S 键控制角色前后移动。

  2. 视角旋转:通过鼠标左右滑动和上下滑动控制角色视角的左右旋转和上下旋转。

  3. 鼠标锁定:在游戏开始时,隐藏并锁定鼠标光标在屏幕中央,防止鼠标移出游戏窗口。

代码注释

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShMoveFirstView : MonoBehaviour
{
    // WS控制物体前后移动  
    // 人物跟随随着鼠标可以左右上下旋转视角
    // 第一人称视角角色控制脚本
    GameObject MainRole; // 定义一个游戏对象,用于存储玩家角色

    public float RotateSpeed = 1f; // 旋转速度,控制视角旋转的灵敏度

    float RotationXzhou; // 存储角色在X轴上的旋转角度(上下旋转)
    float RotationYzhou; // 存储角色在Y轴上的旋转角度(左右旋转)

    void Start()
    {
        // 通过标签 "Player" 找到玩家角色并赋值给 MainRole
        MainRole = GameObject.FindGameObjectWithTag("Player");
        
        // 初始化角色的旋转角度
        RotationXzhou = MainRole.transform.rotation.x;
        RotationYzhou = MainRole.transform.rotation.y;
        
        // 隐藏并锁定鼠标光标在屏幕中央,防止鼠标移出游戏窗口
        Cursor.lockState = CursorLockMode.Locked;
    }

    void Update()
    {
        // 实现前后移动
        float QianHou = Input.GetAxis("Vertical"); // 获取垂直轴输入(W 和 S 键)
        MainRole.transform.Translate(new Vector3(0, 0, QianHou * 1)); // 根据输入值移动角色

        // 实现第一人称视角旋转
        float MouseHorizon = Input.GetAxis("Mouse X"); // 获取鼠标在X轴上的移动量
        float MouseVertical = Input.GetAxis("Mouse Y"); // 获取鼠标在Y轴上的移动量
        Debug.Log("MouseHorizon: " + MouseHorizon); // 输出鼠标在X轴上的移动量,用于调试

        // 更新角色的旋转角度
        RotationXzhou -= MouseVertical; // 上下旋转
        RotationYzhou += MouseHorizon; // 左右旋转

        // 限制角色的上下旋转角度在-30到60度之间,防止过度旋转
        RotationXzhou = Mathf.Clamp(RotationXzhou, -30, 60);

        // 应用角色的旋转
        MainRole.transform.rotation = Quaternion.Euler(RotationXzhou, RotationYzhou, 0);
    }
}

关键点解释

  1. Input.GetAxis("Vertical"): 获取垂直轴输入(W 和 S 键),用于控制角色的前后移动。

  2. Input.GetAxis("Mouse X") 和 Input.GetAxis("Mouse Y"): 获取鼠标在X轴和Y轴上的移动量,用于控制角色的视角旋转。

  3. Mathf.Clamp: 用于限制角色的上下旋转角度在-30到60度之间,防止过度旋转。

  4. Quaternion.Euler: 将欧拉角转换为四元数,并设置角色的旋转。

总结

这个程序通过键盘和鼠标输入实现了第一人称视角的角色控制。通过 W 和 S 键控制角色的前后移动,通过鼠标左右滑动和上下滑动控制角色的视角旋转。代码简洁易懂,适用于第一人称视角的游戏项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Unity3d青子

难题的解决使成本节约,求打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值