当前位置: 首页 > news >正文

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

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

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

input.GetMouseButtonDown和 input.GetMouseButtonUp 能够分别监听鼠标的按下和松开事件,GetMouseButton长按响应,值得注意的是,这三个方法需要传入参数,0表示左键,1表示右键,2表示中间键
比如我们可以在代码中这样写,来监听游戏中的鼠标点击:

    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类型的变量, 比如这样,我们就可以在鼠标点击时获取当前点击的屏幕位置

    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 键。

代码示例:

    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键,控制物体前后左右移动的方法了

    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);}}

相关文章:

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

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

芯知识 | MP3语音芯片IC的优势特征及其在现代科技应用中的价值

随着科技的飞速发展,MP3语音芯片作为一种高度集成的音频处理解决方案,在现代电子产品中发挥着越来越重要的作用。本文将分析MP3语音芯片的优势特征,并探讨其在各个领域的应用价值。 一、MP3语音芯片的优势特征 MP3语音芯片具有多种显著的优…...

C语言进阶之路-基本数据小怪篇

目录 一、学习目标: 二、数据基本类型 整型 浮点型 / 实型 字符 字符串 布尔型数据 三、重要的杂七杂八知识点 常量与变量 标准输入 sizeof运算符: 类型转换 数据类型的本质 整型数据尺寸 可移植性整型 拿下第一个C语言程序 总结 一、学…...

【OpenCV实现图像:使用OpenCV生成拼图效果】

文章目录 概要通用配置不考虑间隔代码实现考虑间隔代码实现小结 概要 概要: 拼图效果是一种将图像切割为相邻正方形并重新排列的艺术效果。在生成拼图效果时,可以考虑不同的模式,包括是否考虑间隔和如何处理不能整除的部分。 不考虑间隔&a…...

【AOSP】生成签名文件release key,通过Android源码对apk进行签名

简介 现在apk都需要签名,Flutter做的项目官方规定编译apk必须签名。 签名的好处: 应用来源验证: 应用签名允许Android系统验证应用的来源。每个应用都使用开发者的私钥进行签名,而应用的签名信息包含在应用的APK文件中。当用户尝…...

深度学习之基于Tensorflow银行卡号码识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介银行卡号码识别的步骤TensorFlow的优势 二、功能三、系统四. 总结 一项目简介 # 深度学习基于TensorFlow的银行卡号码识别介绍 深度学习在图像识别领域取得…...

第95步 深度学习图像目标检测:Faster R-CNN建模

基于WIN10的64位系统演示 一、写在前面 本期开始,我们学习深度学习图像目标检测系列。 深度学习图像目标检测是计算机视觉领域的一个重要子领域,它的核心目标是利用深度学习模型来识别并定位图像中的特定目标。这些目标可以是物体、人、动物或其他可识…...

设计模式—里氏替换原则

1.概念 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影…...

PyTorch包

进入PyTorch的官网: pytorch GitHub 点击GitHub: 进入PyTorch的主目录: 进入Vision reference: detection: 这就是我们在训练过程中会使用到的文件了:...

22、什么是中间件和权限拦截中间件实操

新建中间件 middleware\auth.js // 定义权限判断中间件,中间件的第一个参数是context export default ({store, redirect}) > {console.log("中间件被调用")// if (!store || !store.state.userinfo) {// redirect("/")// } }页面使用…...

vue.config.js

proxy代理 proxy选项用于配置开发服务器的代理。下面是proxy的全部属性: 1. target (String | Object | Function): 指定要代理的目标主机的URL。可以是一个字符串,也可以是一个对象或函数,用于动态返回目标URL。 2. forward (Boolean): 控…...

80C51单片机----数据传送类指令

目录 一.一般传送指令,即mov指令 1.16位传送(仅1条) 2.8位传送 (1)目的字节为A(累加器) (2)目的字节为Rn(工作寄存器) (3)目的字节为direct…...

【Golang】使用泛型对数组进行去重

背景: 要求写一个方法,返回去重后的数组。数组的类型可能是int64,也可能是string,或是其他类型。 如果区分类型的话,每增加一个新的类型都需要重新写一个方法。 示例代码: //对int64数组进行去重 func DeD…...

Ps:画笔工具的基本操作

画笔工具 Brush Tool是 Ps 中最常用的工具,广泛地用于绘画与修饰工作。 虽然多数操作可在画笔工具的工具选项栏中选择执行,但是如果能记住相应的快捷键可大大提高工作效率。 熟练掌握画笔工具的操作对于使用其他工具也非常有益,因为 Ps 中许多…...

【Apache Doris】一键实现万表MySQL整库同步 | 快速体验

【Apache Doris】一键实现万表MySQL整库同步 | 快速体验) 一、 环境信息1.1 硬件信息1.2 软件信息 二、 流程介绍三、 前提概要3.1 安装部署3.2 JAR包准备3.2.1 数据源3.2.2 目标源 3.3 脚本模版 四、快速体验五、常见问题5.1 Mysql通信异常5.2 MySQL无Key同步异常5…...

35.逻辑运算符

目录 一.什么是逻辑运算符 二.C语言中的逻辑运算符 三.逻辑表达式 三.视频教程 一.什么是逻辑运算符 同时对俩个或者俩个以上的表达式进行判断的运算符叫做逻辑运算符。 举例:比如去网吧上网,只有年满十八周岁并且带身份证才可以上网。在C语言中如果…...

ASP.NET Core 启用CORS

浏览器的安全阻止一个域的本地页面请求另外不同域的本地页面,这个限制叫同源策略,这个安全特性用来阻止恶意站点从别的网站读取数据 例如假如我有一个页面叫A.html https://foo.example/A.html 现在页面A.html有一个ajax代码尝试读取B.html的HTML的源…...

io.lettuce.core.RedisCommandExecutionException

io.lettuce.core.RedisCommandExecutionException: ERR invalid password ERR invalid password-CSDN博客 io.lettuce.core.RedisCommandExecutionException /** Copyright 2011-2022 the original author or authors.** Licensed under the Apache License, Version 2.0 (the…...

vue3 导出数据为 excel 文件

文章目录 安装插件封装组件 -- Export2Excel.js多表封装界面使用 -- 数据处理成二维数组更多 菜鸟最近做了一个需求,就是需要上传表单并识别,然后识别出来的内容要可以修改,然后想的就是识别内容变成 form 表单,所以并没有使用 Sp…...

PyQt6简介

锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计12条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…...

CubeMX+正点原子RGB屏终极优化:如何让LTDC刷新率稳定跑满45MHz?

CubeMX与正点原子RGB屏性能优化实战:LTDC时钟稳定运行45MHz的完整指南 在嵌入式显示开发领域,正点原子的7寸1024x600 RGB屏幕凭借其出色的性价比和稳定的性能表现,成为众多开发者的首选。然而,当我们需要在高性能场景下驱动这块屏…...

Rust 生命周期与内存管理实践

Rust 生命周期与内存管理实践 Rust 作为一门系统级编程语言,凭借其独特的所有权系统和生命周期机制,在内存安全和性能之间取得了卓越的平衡。对于开发者而言,理解生命周期与内存管理的实践是掌握 Rust 的关键。本文将深入探讨 Rust 生命周期…...

别再傻傻分不清!一文速查主流芯片公司Logo与官网(附高清图标PDF下载)

芯片品牌视觉指南:从Logo识别到高效信息管理实战手册 在电子元器件领域,一个看似简单的芯片Logo背后可能代表着截然不同的技术路线和产品生态。当工程师在电路板上发现一个陌生的商标,采购专员需要快速核实供应商资质,或是电子爱…...

线性代数在数据挖掘中的核心应用,机器学习必须了解

线性代数在数据挖掘中扮演着核心数学工具的角色,其应用贯穿于数据预处理、特征工程、模型构建与优化的全过程 。 以下将从核心知识点、具体用途及实践教程三个层面进行详细阐述。 一、核心知识点及其在数据挖掘中的用途 线性代数在数据挖掘中的应用主要围绕以下几…...

八大网盘直链解析工具:LinkSwift让文件下载速度飙升的终极解决方案

八大网盘直链解析工具:LinkSwift让文件下载速度飙升的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动…...

基于深度学习的《权游》龙族图像分类器实战

1. 项目概述:基于深度学习的《权游》龙族图像分类器去年重刷《权力的游戏》时,我注意到剧中三条龙(卓耿、雷戈、韦赛利昂)的视觉特征其实有规律可循。作为计算机视觉从业者,我决定用这个经典IP练手,构建一个…...

LLM 算法岗 | 八股题目 · 代码手撕 · 题目汇总与解析

引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...

SteamCleaner:高效清理游戏客户端缓存的专业工具

SteamCleaner:高效清理游戏客户端缓存的专业工具 【免费下载链接】SteamCleaner :us: A PC utility for restoring disk space from various game clients like Origin, Steam, Uplay, Battle.net, GoG and Nexon :us: 项目地址: https://gitcode.com/gh_mirrors/…...

26年新高考英语大纲词汇表3500个电子版PDF(含正序版、乱序版和默写版)

2026年高中英语大纲词汇表说明 2026年高中英语大纲词汇表说明 类别内容描述适用场景词汇版本提供完整版高中英语大纲词汇3500个,分为正序版、乱序版及默写版三种形式。满足不同学习阶段的需求。正序版按字母顺序排列,便于系统学习与查阅。基础词汇梳理…...

新手必看:CTFHub靶场RCE通关保姆级教程(从环境搭建到Flag获取)

零基础通关CTFHub RCE靶场:从环境搭建到Flag获取的全链路指南 第一次接触CTF比赛时,面对那些看似神秘的术语和复杂的漏洞利用场景,我和大多数新手一样感到无从下手。特别是RCE(远程代码执行)这类题目,往往…...