Input类

Input 获取键盘事件
  • Input.GetKey () 用来检测用户持续按键的事件
  • Input.GetKeyDown() 用来检测用户按键按下的事件
  • Input.GetKeyUp() 用来检测用户按键弹起的事件
Input 获取鼠标事件
  • Input.GetMouseButton () 用来检测用户持续按键的事件
  • Input.GetMouseButtonDown () 用来检测用户按键按下的事件
  • Input.GetMouseButtonUp () 用来检测用户按键弹起的事件
    参数 0 表示鼠标左键
    参数 1 表示鼠标右键
    参数 2 表示鼠标中键


using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour
{

    void Start()
    {

    }

    // 获取用户事件需要使用 Input 类

    void Update()
    {
        // 每帧都需要监听用户事件
        // 在当前这一帧,如果用户按下了 W 就会返回True,否则返回 False
        if (Input.GetKeyDown(KeyCode.W))
        {
            // Input.GetKey()  用来检测用户持续按键的事件
            Debug.Log ("往前走");
        }

        if (Input.GetKeyDown(KeyCode.S))
        { 
            Debug.Log("往后退");
        }

        if (Input.GetKeyUp (KeyCode.Alpha1))
        {
            // 用来检测用户按键弹起的事件
            Debug.Log("弹起了1键");
        }

        if (Input.GetKey(KeyCode.A))
        {
            // 用来检测用户持续按键的事件
            Debug.Log("往左转");
        }

        // Input.GetMouseButtonDown() 方法用来检测鼠标按键按下的事件
        // 参数 0 表示鼠标左键
        // 参数 1 表示鼠标右键
        // 参数 2 表示鼠标中键
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("按下了鼠标左键");
        }

        if (Input.GetMouseButtonDown(1))
        {
            Debug.Log("按下了鼠标右键");
        }

        if (Input.GetMouseButtonDown(2))
        {
            Debug.Log("按下了鼠标中键");
        }

        // Input.GetMouseButtonUp() 方法用来检测鼠标按键弹起的事件
        // 参数 0 表示鼠标左键
        // 参数 1 表示鼠标右键
        // 参数 2 表示鼠标中键
        if (Input.GetMouseButtonUp(0))
        {
            Debug.Log("弹起了鼠标左键");
        }

        if (Input.GetMouseButtonUp(1))
        {
            Debug.Log("弹起了鼠标右键");
        }

        if (Input.GetMouseButtonUp(2))
        {
            Debug.Log("弹起了鼠标中键");
        }

        // Input.GetMouseButton() 方法用来检测鼠标持续按键的事件
        if (Input.GetMouseButtonUp(0))
        {
            Debug.Log("持续按鼠标左键");
        }

    }

}

代码实例

在Unity中,要实现似的第一人称游戏的交互,你需要监听Input中的鼠标输入事件,并结合键盘的WASD键来控制相机和角色移动。下面是一个简单的步骤和代码示例: 首先,在Unity编辑器中,创建一个新的C#脚本,命名为`FirstPersonControls`,然后将以下内容粘贴到脚本中: ```csharp using UnityEngine; using UnityEngine.InputSystem; public class FirstPersonControls : MonoBehaviour { public Transform playerBody; // 设置玩家角色的变换对象 public Camera mainCamera; // 设置主相机 private Vector2 mouseLook; // 存储鼠标视角信息 private float moveSpeed = 5f; // 移动速度 private float cameraSensitivity = 45f; // 鼠标灵敏度 private PlayerInput inputManager; // 输入管理器实例 private void Awake() { inputManager = new PlayerInput(); // 初始化输入管理器 inputManager.AddActionMapping("Move", new AxisMapper { axis = "Horizontal", deadZone = 0.1f }); inputManager.AddActionMapping("Look", new AxisMapper { axis = "Vertical", deadZone = 0.1f }); // 注册事件处理 inputManager.Move.performed += OnMove; inputManager.Look.performed += OnLook; } private void Update() { if (inputManager.IsConnected()) { // 捕获鼠标移动 mouseLook = inputManager.GetAction("Look").value.ReadValue<Vector2>().normalized; // 根据鼠标和键盘输入调整相机视角 transform.RotateAround(playerBody.position, Vector3.up, mouseLook.x * Time.deltaTime * cameraSensitivity); // WASD键移动 var movement = inputManager.GetAxis("Move"); playerBody.Translate(movement * moveSpeed * Time.deltaTime, Space.World); } } private void OnMove(InputAction.CallbackContext context) { // 当"Move"动作被触发时,执行回调 Debug.Log($"Player moved left: {context.ReadValue<float>() < 0}"); } private void OnLook(InputAction.CallbackContext context) { // 当"Look"动作被触发时,执行回调 Debug.Log($"Player looked up: {context.ReadValue<float>() > 0}"); } } ``` 在这个脚本中,我们首先初始化了一个`PlayerInput`实例,用于接收用户输入。然后,我们注册了两个轴映射事件:`Move`负责水平方向的移动,`Look`负责垂直视角变化。在`Update`函数里,我们实时获取用户的输入,并相应地调整相机和角色的位置。 记得在场景中设置好玩家角色的`playerBody`变量,并将此脚本应用到含相机的GameObject上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值