【Unity入门】鼠标输入和键盘输入

Unity的Input类提供了许多监听用户输入的方法,比如我们常见的鼠标,键盘,手柄等。我们可以用Input类的接口来获取用户的输入信息

一、监听鼠标输入
GetMouseButtonUp 、GetMouseButtonDown、GetMouseButton

input.GetMouseButtonDown和 input.GetMouseButtonUp 能够分别监听鼠标的按下和松开事件,GetMouseButton长按响应,值得注意的是,这三个方法需要传入参数,0表示左键,1表示右键,2表示中间键

比如我们可以在代码中这样写,来监听游戏中的鼠标点击:

csharp 复制代码
    void Update()
    {
        /*鼠标输入*/
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("你按下了鼠标左键");
        }
        if (Input.GetMouseButton(0))
        {
            Debug.Log("你压着鼠标左键不放");
        }
        if (Input.GetMouseButtonUp(0))
        {
            Debug.Log("你松开了鼠标左键");
        }

        if (Input.GetMouseButtonDown(1))
        {
            Debug.Log("你按下了鼠标右键");
        }
        if (Input.GetMouseButton(1))
        {
            Debug.Log("你压着鼠标右键不放");
        }
        if (Input.GetMouseButtonUp(1))
        {
            Debug.Log("你松开了鼠标右键");
        }

        if (Input.GetMouseButtonDown(2))
        {
            Debug.Log("你按下了鼠标中键");
        }
        if (Input.GetMouseButton(2))
        {
            Debug.Log("你压着鼠标中键不放");
        }
        if (Input.GetMouseButtonUp(2))
        {
            Debug.Log("你松开了鼠标中键");
        }

    }
mousePosition屏幕坐标

如果想获取当前屏幕的坐标,可以用Input.mousePosition来访问,它是一个vector3类型的变量, 比如这样,我们就可以在鼠标点击时获取当前点击的屏幕位置

csharp 复制代码
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("正在执行鼠标左键点击");
            Vector3 MousePos = Input.mousePosition;
            Debug.Log("当前坐标:" + MousePos);
        }
    }
二、监听键盘输入
GetKeyUp,GetKeyDown,GetKey

和鼠标一样,键盘也可以获取它的按下,长按和抬起状态。分别需要调用Input.GetKeyDown,Input.GetKey 和 Input.GetKeyUp 来实现

同时它需要传入参数:KeyCode,下面是常见的KeyCode值:

  • KeyCode.A:A 键。

  • KeyCode.W:W 键。

  • KeyCode.S:S 键。

  • KeyCode.D:D 键。

  • KeyCode.Space:空格键。

  • KeyCode.Return:回车键。

  • KeyCode.Escape:Esc 键。

  • KeyCode.LeftShift:左 Shift 键。

  • KeyCode.RightShift:右 Shift 键。

  • KeyCode.LeftAlt:左 Alt 键。

  • KeyCode.RightAlt:右 Alt 键。

  • KeyCode.Tab:Tab 键。

代码示例:

csharp 复制代码
    void Update()
    {

        /*键盘输入*/
        if (Input.GetKey(KeyCode.Space))
        {
            Debug.Log("你压着空格不放");
        }
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Debug.Log("你按下了空格");
        }
        if (Input.GetKeyUp(KeyCode.Space))
        {
            Debug.Log("你松开了空格");
        }
        
        if (Input.GetKey(KeyCode.A))
        {
            Debug.Log("你压着A不放");
        }
        if (Input.GetKeyDown(KeyCode.A))
        {
            Debug.Log("你按下了A");
        }
        if (Input.GetKeyUp(KeyCode.A))
        {
            Debug.Log("你松开了A");
        }

    }

我们学会了transform.translate方法,也学会了响应键盘的按键事件,那我们就可以写出一个用WSAD键,控制物体前后左右移动的方法了

csharp 复制代码
    void Update()
    {
        float DisPreSec = 6f;
        if (Input.GetKey(KeyCode.W))
        {
            this.transform.Translate(0, 0, DisPreSec * Time.deltaTime);
        }
 
        if (Input.GetKey(KeyCode.S))
        {
            this.transform.Translate(0, 0, -DisPreSec * Time.deltaTime);
        }
 
        if (Input.GetKey(KeyCode.A))
        {
            this.transform.Translate(DisPreSec * Time.deltaTime, 0, 0);
        }
 
        if (Input.GetKey(KeyCode.D))
        {
            this.transform.Translate(-DisPreSec * Time.deltaTime, 0, 0);
        }
    }
相关推荐
omegayy18 小时前
Unity 2022.3.x部分Android设备播放视频黑屏问题
android·unity·视频播放·黑屏
虾球xz21 小时前
游戏引擎学习第200天
学习·游戏引擎
woshihedayu1 天前
虚幻引擎控制角色跟随移动方向旋转的方法
游戏引擎·虚幻
虾球xz1 天前
游戏引擎学习第199天
学习·游戏引擎
与火星的孩子对话1 天前
Unity3D开发AI桌面精灵/宠物系列 【三】 语音识别 ASR 技术、语音转文本多平台 - 支持科大讯飞、百度等 C# 开发
人工智能·unity·c#·游戏引擎·语音识别·宠物
向宇it1 天前
【零基础入门unity游戏开发——2D篇】2D 游戏场景地形编辑器——TileMap的使用介绍
开发语言·游戏·unity·c#·编辑器·游戏引擎
牙膏上的小苏打23332 天前
Unity Surround开关后导致获取主显示器分辨率错误
unity·主屏幕
Unity大海2 天前
诠视科技Unity SDK开发环境配置、项目设置、apk打包。
科技·unity·游戏引擎
浅陌sss2 天前
Unity中 粒子系统使用整理(一)
unity·游戏引擎
维度攻城狮2 天前
实现在Unity3D中仿真汽车,而且还能使用ros2控制
python·unity·docker·汽车·ros2·rviz2