UNITY-个人练习FPS(Demo)-3

文章介绍了在Unity3D中如何封装玩家参数类,包括Vector2坐标变量、布尔状态变量,以及使用[RequireComponent]和[HideInInspector]属性的用法。此外,还详细说明了封装玩家输入类,涉及光标的锁定、隐藏和行为控制,以及初始化输入的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.封装玩家参数类

1.首先定义变量:

Vector2鼠标输入方向

Vector2玩家移动方向

bool isCrouch是否蹲下

bool isJump是否跳跃

bool isSprint是否疾跑

bool isFire是否开枪

bool isReload是否装载子弹

2.在类前添加:[RequireComponent(typeof(CharacterController))]

//RequireComponent的作用是,当我们把一个Script绑定到GameObject上时会同时把需要依赖的脚本也一起绑定上去。

3.在变量名称前添加[HideInInspector]

[HideInInspector]是将 public 公有变量隐藏起来

[SerializeField]将 private 私有变量显示出来

//RequireComponent的作用是,当我们把一个Script绑定到GameObject上时会同时把需要依赖的脚本也一起绑定上去。
[RequireComponent(typeof(CharacterController))]
///<summary>
/// 玩家参数类
///</summary>
public class fps_PlayerParameter : MonoBehaviour
{
    //[HideInInspector]是将 public 公有变量隐藏起来
    //[SerializeField]将 private 私有变量显示出来,
    [HideInInspector]
    public Vector2 inputSmoothLook;//鼠标输入
    [HideInInspector]
    public Vector2 inputMoveVector;//移动方向
    [HideInInspector]
    public bool isCrouch;
    [HideInInspector]
    public bool isJump;
    [HideInInspector]
    public bool isSprint;
    [HideInInspector]
    public bool isFire;
    [HideInInspector]
    public bool isReload;
}

二.封装玩家输入类

  1. 对游戏光标字段用属性进行封装

锁定光标到游戏窗口的中心

Cursor.lockState=CursorLockMode.Locked;

光标行为是不修改

Cursor.lockState=CursorLockMode.None;

限制光标移动到游戏窗口

Cursor.lockState=CursorLockMode.Confined;

设置隐藏光标: 置为false即可隐藏,true则为显示

Cursor.visible = false;

 /// <summary>
    /// 光标锁定属性
    /// </summary>
    /// <returns></returns>
    public bool LockCurse
    {
        //读取
        get{ return Cursor.lockState == CursorLockMode.Locked ? true : false; }
        //写入
        set
        {
            Cursor.visible = value;//value为LockCurse的值  当为true 光标可见
            Cursor.lockState=value?CursorLockMode.Locked : CursorLockMode.None;
        }
    }

  1. 定义初始化输入的方法

在start函数中获取脚本组件 并在游戏开始时,写入光标锁定属性

    LockCurse = true;       
    parameter=GetComponent<fps_PlayerParameter>();
    input=GameObject.FindGameObjectWithTag(Tags.gameController).GetComponent<fps_Input>();
    /// <summary>
    /// 初始化输入
    /// </summary>
    private void InitialInput()
    {
        parameter.inputMoveVector = new Vector2(input.GetAxis("Horizontal"), input.GetAxis("Vertical"));

        parameter.inputSmoothLook = new Vector2(input.GetAxisRaw("Mouse X"), input.GetAxisRaw("Mouse Y"));

        parameter.isCrouch = input.GetButton("Crouch");
        parameter.isJump = input.GetButton("Jump");
        parameter.isSprint = input.GetButton("Sprint");
        parameter.isFire = input.GetButton("Fire");
        parameter.isReload = input.GetButtonDown("Reload");
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值