一.封装玩家参数类
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;
}
二.封装玩家输入类
对游戏光标字段用属性进行封装
锁定光标到游戏窗口的中心
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;
}
}
定义初始化输入的方法
在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");
}