Unity 之 Input类

news2024/12/22 23:03:16

文章目录

  • 总述
  • 具体介绍

在这里插入图片描述

总述

Input 类是 Unity 中用于处理用户输入的重要工具,它允许您获取来自键盘、鼠标、触摸屏和控制器等设备的输入数据。通过 Input 类,您可以轻松地检测按键、鼠标点击、鼠标移动、触摸、控制器按钮等用户输入事件。以下是关于 Input 类的详细介绍:

  1. 按键输入: 您可以使用 Input.GetKey(KeyCode key) 方法来检测是否按下了指定的键。例如,Input.GetKey(KeyCode.W) 可以用来检测玩家是否按下了"W"键。

  2. 鼠标点击: 使用 Input.GetMouseButtonDown(int button) 方法可以检测鼠标按下事件。button 参数用于指定鼠标按钮,0表示左键,1表示右键,2表示中键。

  3. 鼠标移动: 通过 Input.GetAxis("Mouse X")Input.GetAxis("Mouse Y") 可以获取鼠标在水平和垂直方向上的移动距离。

  4. 触摸输入: 对于移动设备,您可以使用 Input.touches 数组来获取当前的触摸事件。每个触摸事件都包含有关触摸位置、状态和标识符的信息。

  5. 控制器输入: 对于游戏控制器,您可以使用类似于按键输入的方法来检测按钮是否被按下,如 Input.GetButtonDown(string buttonName)

  6. 轴输入: 除了按键和按钮,您还可以检测轴的输入,如控制器的摇杆。使用 Input.GetAxis(string axisName) 可以获取轴的值。

  7. 按键释放: 您可以使用 Input.GetKeyUp(KeyCode key) 方法来检测按键是否释放。

  8. 虚拟轴和按钮: 在 Unity 中,您还可以设置虚拟轴和虚拟按钮,这些虚拟输入可以模拟实际输入设备,使得代码更具有可移植性。

具体介绍

以下是关于 Input 类中每个要点的详细代码示例和解释:

  1. 按键输入:
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKey(KeyCode.W))
        {
            Debug.Log("W键被按下!");
        }
    }
}

在这个示例中,Input.GetKey(KeyCode.W) 方法用于检测是否按下了"W"键。如果按下了"W"键,将输出一条日志信息。

  1. 鼠标点击:
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("鼠标左键被按下!");
        }
    }
}

在这个示例中,Input.GetMouseButtonDown(0) 方法用于检测鼠标左键是否被按下。如果鼠标左键被按下,将输出一条日志信息。

  1. 鼠标移动:
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X");
        float mouseY = Input.GetAxis("Mouse Y");
        
        Debug.Log("鼠标X轴移动:" + mouseX);
        Debug.Log("鼠标Y轴移动:" + mouseY);
    }
}

在这个示例中,Input.GetAxis("Mouse X")Input.GetAxis("Mouse Y") 方法用于获取鼠标在水平和垂直方向上的移动距离。如果鼠标水平移动,将输出相应的鼠标移动信息。

  1. 触摸输入:
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.touchCount > 0)
        {
            Touch touch = Input.GetTouch(0);
            Debug.Log("触摸位置:" + touch.position);
        }
    }
}

在这个示例中,Input.touchCount 用于获取当前触摸事件的数量。如果有触摸事件,Input.GetTouch(0) 方法将返回第一个触摸事件的信息,包括位置等。

  1. 控制器输入:
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetButtonDown("Jump"))
        {
            Debug.Log("跳跃按钮被按下!");
        }
    }
}

在这个示例中,Input.GetButtonDown("Jump") 方法用于检测控制器上的"Jump"按钮是否被按下。如果按钮被按下,将输出一条日志信息。

  1. 轴输入:
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        float horizontalInput = Input.GetAxis("Horizontal");
        float verticalInput = Input.GetAxis("Vertical");
        
        Debug.Log("水平输入:" + horizontalInput);
        Debug.Log("垂直输入:" + verticalInput);
    }
}

在这个示例中,Input.GetAxis("Horizontal")Input.GetAxis("Vertical") 方法用于获取水平和垂直方向上的轴输入值。如果玩家在控制器或键盘上移动,将输出相应的输入值。

  1. 按键释放:
using UnityEngine;

public class InputExample : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyUp(KeyCode.W))
        {
            Debug.Log("W键被释放!");
        }
    }
}

在这个示例中,Input.GetKeyUp(KeyCode.W) 方法用于检测"W"键是否被释放。如果"W"键被释放,将输出一条日志信息。

  1. 虚拟轴和按钮:

在 Unity 编辑器中设置虚拟轴和按钮,然后可以使用类似于上述的方法来获取虚拟输入。

总之,这些代码示例演示了如何使用 Input 类来处理用户输入,从键盘、鼠标、触摸屏到控制器等不同设备的输入事件。通过这些方法,您可以实现丰富的游戏逻辑和交互。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/905192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拥塞控制(TCP限制窗口大小的机制)

拥塞控制机制可以使滑动窗口在保证可靠性的前提下,提高传输效率 关于滑动窗口的属性以及部分机制推荐看TCP中窗口和滑动窗口的含义以及流量控制 拥塞控制出现的原因 看了上面推荐的博客我们已经知道了,由于接收方接收数据的能力有限,所以要通…

js IntersectionObserver简单案例

效果 源码 <!DOCTYPE html> <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&q…

IP库新增经过实践的Verilog 库

网上严重缺乏实用的 Verilog 设计。Project F 库是尝试让 FPGA 初学者变得更好部分。 设计包括 Clock- 时钟生成 (PLL) 和域交叉Display - 显示时序、帧缓冲区、DVI/HDMI 输出Essential- 适用于多种设计的便捷模块Graphics- 绘制线条和形状Maths- 除法、LFSR、平方根、正弦....…

Vue--》打造个性化医疗服务的医院预约系统(七)完结篇

今天开始使用 vue3 + ts 搭建一个医院预约系统的前台页面,因为文章会将项目的每一个地方代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的GithHub上,大家可以自行去进行下载运行,希望本文章对有帮助的朋友们能多多关…

Android OpenCV(七十四): Android OpenCV SDK 升级至 4.8.0

前言 如昨日文章所述,OpenCV 4.8.0 已经发布,虽然系列文章已经停更很久,但是版本升级工作笔者是很乐意快速完成的。 OpenCV 4.8.0 Android SDK:https://github.com/opencv/opencv/releases/download/4.8.0/opencv-4.8.0-android-sdk.zip 更新日志:https://github.com/o…

Apache Doris IP变更问题详解

Apache Doris IP变更问题详解 一、背景二、环境硬件信息软件信息 三、FE恢复3.1 异常日志3.2 获取当前ip3.3 重置ip信息3.4 重置元数据记录3.5 元数据模式恢复3.6 重置fe集群节点3.7 关闭元数据模式重启fe 四、BE恢复4.1 获取当前ip4.2 重置ip信息4.3 重置be集群节点 一、背景 …

简单、快速、无需注册的在线 MockJs 工具

简单、快速、无需注册的 MockJs 工具。通过参数来返回数据&#xff0c;传入什么参数就返回什么数据。 使用 接口只支持返回文本类数据&#xff0c;不支持图片、流数据等。 json 调用接口 https://mock.starxg.com/?responseBody{“say”:“hello”}&contentTypeapplic…

13.减少磁盘延迟方法

第四章 文件管理 13.减少磁盘延迟时间的方法 ​   (盘面号&#xff0c;柱面号&#xff0c;扇区号)&#xff0c;且需要连续读取物理地址(00&#xff0c;000&#xff0c;000)&#xff5e;(00&#xff0c;001&#xff0c;111)的扇区。先读取(00&#xff0c;000&#xff0c;000)…

qiuzhiji3

本篇想介绍一下慧与&#xff0c;这里的工作氛围和企业文化令人难忘&#xff0c;希望更多人了解它 也想探讨一下不同的文化铸就的不同企业&#xff0c;究竟有哪些差别。 本篇将从我个人角度出发描述慧与。 2022/3/16至2023/7/31 本篇初次写于2023年8月20日 说起来在毕业之前那段…

jstat(JVM Statistics Monitoring Tool):虚拟机统计信息监视工具

jstat&#xff08;JVM Statistics Monitoring Tool&#xff09;&#xff1a;虚拟机统计信息监视工具 用于监视虚拟机各种运行状态信息的命令行工具。 它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据&#xff0c;在没有GUI图形界面、只提…

多地图-RRT算法规划路径

RRT算法 %% %% 初始化 mapim2bw(imread(map2.bmp)); % bmp无损压缩图像500x500,im2bw把灰度图转换成二值图像01 source[10 10]; % 起始点位置 goal[490 490]; % 目标点位置 stepsize20; % RRT每步步长 disTh20; % 直到qnearest和目标点qgaol距离小于一个阈值 maxFailedAttemp…

Nacos配置管理、Feign远程调用、Gateway服务网关

1.Nacos配置管理 1.1.将配置交给Nacos管理的步骤 1.在Nacos中添加配置 Data Id服务名称-环境名称.yaml eg&#xff1a;userservice-dev.yaml 2.引入nacos-config依赖 在user-service服务中&#xff0c;引入nacos-config的客户端依赖 <!--nacos配置管理依赖--> <dep…

verilog defparam

verilog defparam 文章目录 verilog defparam一、背景二、模块例化传参与defparam的对比2.1 带参数模块例化的例子2.2 defparam的例子 三、defparam3.1 例子 一、背景 当一个模块被另一个模块引用例化时&#xff0c;高层模块可以对低层模块的参数值进行改写。这样就允许在编译…

Verilog中的 条件语句\多路分支语句\循环语句

Verilog中的条件语句\多分支语句\循环语句 文章目录 Verilog中的条件语句\多分支语句\循环语句一、背景二、if-else2.1 标准结构2.2 例子 三、case-endcase3.1 标准结构3.2 例子3.2.1 三路选择器的case部分&#xff0c;如下&#xff1a;3.2.2 casez的四路选择器&#xff0c;如下…

5.6.webrtc三大线程

那今天呢&#xff1f;我们来介绍一下web rtc的三大线程&#xff0c;那为什么要介绍这三大线程呢&#xff1f;最关键的原因在于web rtc的所有其他线程都是由这三大线程所创建的。那当我们将这三个线程理解清楚之后呢&#xff1f;我们就知道其他线程与它们之间是怎样关系&#xf…

14.磁盘的管理

第四章 文件管理 14.磁盘的管理 自举程序比较复杂&#xff0c;所以无法保证自举程序相关的数据永远不改变&#xff0c;这个问题该如何解决&#xff1f; 自举装入程序的复杂度不高&#xff0c;很小&#xff0c;所以可以保证自举装入程序是不会出错的&#xff0c;不需要更改的&…

C语言小白急救 整型与浮点型在内存中的存储

文章目录 一、有无符号整型的存储1.整形家族2.整形在内存中的存储3.大小端介绍4.unsigned 类型存储 二、浮点型的存储1.浮点型家族2.浮点型的存储 一、有无符号整型的存储 1.整形家族 字符在内存中存储的是字符的ASCII码值&#xff0c;ASCII码值是整形&#xff0c;所以它也归于…

【C++】做一个飞机空战小游戏(十一)——游戏过关、通关、结束的设置

[导读]本系列博文内容链接如下&#xff1a; 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…

数据结构(Java实现)-集合与时间和空间复杂度

什么是集合框架 Java 集合框架 Java Collection Framework &#xff0c;又被称为容器 container &#xff0c;是定义在 java.util 包下的一组接口 interfaces 和其实现类 classes 。 什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之…

第6章 性能分析相关的CPU特性

性能分析的终极目标是找到性能瓶颈&#xff0c;并定位到与之相关的代码段。 性能剖析可以快速让人了解应用程序热点。有时&#xff0c;性能剖析是开发者解决性能问题的唯一手段&#xff0c;尤其是针对较高层次性能问题。然而&#xff0c;即使解决了所有的主要性能问题&#xf…