Input

2023-11-19

Unity3d的所有输入,包括键盘鼠标和智能手机触摸等都是通过这一个类来完成 –Input类。 
见API:http://docs.unity3d.com/ScriptReference/Input.html

输入Input类使用:建议在Updata()方法内使用。官方文档如是说: 
–Note also that the Input flags are not reset until “Update()”, so its suggested you make all the Input Calls in the Update Loop.

鼠标输入

获得相应的鼠标位置:Input的静态变量 
点击鼠标:鼠标左键为0,右键为1,滚轮为2.

Input.mousePosition
Input.GetMouseButton(0)//按下状态瞬间为true
Input.GetMouseButtonDown(0)//按下瞬间为true
Input.GetMouseButtonUp(1)//弹起瞬间为true
  • 1
  • 2
  • 3
  • 4

触摸输入

主要有以下变量与方法

Input.multiTouchEnabled
Input.simulateMouseWithTouches
Input.touchCount
Input.touches
Input.touchSupported
Input.GetTouch()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

输入管理

输入管理–InputManager 
通过菜单Edit–>Project Settings–>Input可打开InputManager。 
InputManager InputManager的Axes项 
在代码里可以如下使用InputManager

var input = Input.GetButton ("Horizontal");//按下为true,否则为false,建议使用GetButton()代替GetKey()
var input = Input.GetAxis ("Horizontal");//取得-1到1的值,无输入则为0
  • 1
  • 2

键盘输入

主要有以下方法

Input.GetAxis() //返回float值而不是布尔值,从-1到1之间
Input.GetAxisRaw()//返回非区间,而是端点值(-1,0,1)或者摇杆的位置
Input.GetButton() //按下状态瞬间为true
Input.GetButtonDown()//按下瞬间为true
Input.GetButtonUp()//弹起瞬间为true
Input.GetKey()//点击返回true,其他情况返回false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

getKey()方法

在方法内输入Key值即可

    void Update() {
        if (Input.GetKey("up"))//直接输入Key值
            print("up arrow key is held down");
        if (Input.GetKey(KeyCode.UpArrow))//通过KeyCode类输入Key值
            print("KeyCode.UpArrow key is held down");
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

其中有效的Key值如下: 
普通键“a”, “b”, “c” … 
数字键“1”, “2”, “3”, … 
方向键“up”, “down”, “left”, “right” 
小键盘“[1]”, “[2]”, “[3]”, “[+]”, “[equals]” 
特殊键“backspace”, “tab”, “return”, “escape”, “space”, “delete”, “enter”, “insert”, “home”, “end”, “page up”, “page down” 
复键“right shift”, “left shift”, “right ctrl”, “left ctrl”, “right alt”, “left alt”, “right cmd”, “left cmd” 
鼠标“mouse 0”, “mouse 1”, “mouse 2”, … 
摇杆“joystick button 0”, “joystick button 1”, “joystick button 2”, … 
摇杆“joystick 1 button 0”, “joystick 1 button 1”, “joystick 2 button 0”, … 
方法键“f1”, “f2”, “f3”, … 
见API:http://docs.unity3d.com/Manual/ConventionalGameInput.html

getButton()方法

该方法不是直接与Key值对应,而是与输入管理类的Axes项对应。 
建议使用GetButton()代替GetKey(),项目后期更方便修改。

    void Update() {
        if (Input.GetButton("Fire1") && Time.time > nextFire) {
            nextFire = Time.time + fireRate;
            GameObject clone = Instantiate(projectile, transform.position, transform.rotation) as GameObject;
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

GetAxis()方法

返回float值而不是布尔值,从-1到1之间 
输入管理类InputManager专门为Axis设置了参数 
InputManager的Axes项 
Dead: 表示最小作用区域,当触摸或者摇杆小于这个值则认为没有输入 
Gravity:表示松开按键时,从端点(1或者-1)返回缺省值(0)的速度 
Sensitivity:表示按下按键时,从缺省值(0)行驶到端点(1或者-1)的速度 
Snap: 闪电反向的作用 
不勾选:-1逐渐变到0再逐渐变到1; 
勾选上:-1立刻变为0再逐渐变到1。

MonoBehavior的鼠标事件

类似Start()和Update()方法一样,以下鼠标方法在MonoBehavior子类可以直接使用. (这是在monobehavior 中实现的方法)

以下方法要求组件的Collider必须打开,否则都将检测不到鼠标。

void OnMouseEnter(){}//鼠标进入区域
void OnMouseOver(){}//鼠标停留在区域内
void OnMouseExit(){}//鼠标离开区域
void OnMouseDown(){}//鼠标按下
void OnMouseUp(){}  //鼠标松开
void OnMouseDrag(){}//鼠标拖拽
void OnMouseUpAsButton(){}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
 https://blog.csdn.net/dqzggdmzdbwyj/article/details/49907363
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Input 的相关文章

  • Unity—UGUI

    每日一句 读数 学习 去更远的地方 才能摆脱那些你不屑一顾的圈子 目录 InputFiled输入框 例 用户名和密码 Toggle组件 案例 冷却效果 InputFiled输入框 Text Component 输入文本组件 Text输入内容
  • 游戏开发unity编辑器扩展知识系列:修改纹理资源的TextureType

    需要用TextureImporter导入资源 调用如下代码 TextureImporter importer TextureImporter TextureImporter GetAtPath path importer textureTy
  • Unity 资源加载卸载过程

    什么时候才是UnusedAssets 看一个例子 Object obj Resources Load MyPrefab GameObject instance Instantiate obj as GameObject Destroy in
  • 【UGUI】2D头顶血条制作

    前言 近期因为需要制作玩家和敌人头顶的2D血条 查找了很多博客 发现很多都拘束于Canvas的渲染模式必须要设定为ScreenSpace Overlay 还有应该是版本原因 我的是unity2019 1 11f1 用RecttTransfo
  • 蒙特卡洛积分、重要性采样、低差异序列

    渲染公式 渲染的目标在于计算周围环境的光线有多少从表面像素点反射到相机视口中 要计算总的反射光 每个入射方向的贡献 必须将他们在半球上相加 为入射光线 与法线 的夹角 为方便计算可以使用法线向量和入射向量 单位化 的乘积表示 对于基于图像的
  • 【Unity&C#&随机数】随机数

    一个简单的随机数获得 0或1 使用了这样的代码 想要获得0或者1 if Input anyKeyDown float i 1 if i 1 i Random Range 0 Rang i i lt 0 5 0 1 Debug Log Cou
  • unity制作一个可以自由滑动收缩的历史记录功能。

    公司在做一款模拟经营类的卖车游戏 需要一个简单的历史记录功能 放在左上角 记录最近20条的收入 支出记录 超过2秒不动则收起 收起时展示最近的一个消息记录 用到的组件是ScrollView 使用方法可以参考我写过的一篇博客 ScrollVi
  • 1.17 从0开始学习Unity游戏开发--场景切换

    前面的所有文章我们都在一个固定的游戏场景内进行开发 在最开始介绍场景这个概念的时候就已经提及 这个场景可以是一张地图 或者是一个对战房间等等 所以显然这个场景可以有多个 并且可以从一个场景切换到另外一个场景 那么在Unity中如何进行场景切
  • UnityVR--组件3--Line Renderer--线性渲染

    目录 线性渲染组件简介 绘制线条Line Renderer组件介绍 绘制拖尾Trail Renderer组件介绍 应用1 使用Line Renderer绘制线段 应用1实现 使用系统工具或自定义工具绘制线段 应用2 Trail Render
  • Unity 键盘控制人物移动——之输入方式代码的编写

    键盘输入 控制人物移动 在我们制作游戏中最常见的需求之一就是使用键盘移动游戏角色 那么我们首先需要获取键盘输入 以下提供两种方法获取键盘 这里尽量通过截图解释让大家理解代码的含义 GetInput void FixedUpdate Move
  • Unity打开工程时卡住的问题

    自从Unity升级了一个版本后 Unity打开工程卡住的问题越来越严重了 具体表现为 选择工程后 Unity窗口消失 但进程还在 有时候等个几分钟能出来 有时候等10分钟都不见得能出来 直观感受上看 似乎是Unity加载工程的时候某一步卡了
  • unity实现鼠标右键控制视角

    主要实现的功能是相机跟随主角 鼠标右击移动后 相机的视角会旋转 思路 在主角里创建空的子物体 把相机绑在空物体上 通过旋转空物体来实现视角的旋转 要把相机调整到适当位置 代码如下 public float rotateSpeed 100 设
  • 【原神游戏开发日志1】缘起

    原神游戏开发日志1 缘起 版权声明 本文为 优梦创客 原创文章 您可以自由转载 但必须加入完整的版权声明 文章内容不得删减 修改 演绎 相关学习资源见文末 大家好 最近看到原神在TGA上频频获奖 作为一个14年经验的游戏开发行业的老兵 我就
  • 【Unity】如何让Unity程序一打开就运行命令行命令

    背景 Unity程序有时依赖于某些服务去实现一些功能 此时可能需要类似打开程序就自动运行Windows命令行命令的功能 方法 using UnityEngine using System Diagnostics using System T
  • 【Unity】运行时创建曲线(贝塞尔的运用)

    Unity 运行时创建线 贝塞尔的运用 1 实现的目标 在运行状态下创建一条可以使用贝塞尔方法实时编辑的网格曲线 2 原理介绍 2 1 曲线的创建 unity建立网格曲线可以参考 Unity程序化网格体 的实现方法 主要分为顶点 三角面 U
  • U3D游戏开发中摇杆的制作(UGUI版)

    在PC端模拟摇杆 实现玩家通过控制摇杆让玩家移动 以下是完整代码 using System Collections using System Collections Generic using UnityEngine using Unity
  • 游戏开发常见操作梳理之NPC任务系统

    多数游戏存在任务系统 接下来介绍通过NPC触发任务的游戏制作代码 using System Collections using System Collections Generic using UnityEngine
  • 游戏开发常见操作梳理系列之——玩家信息的显示系统

    在游戏中 有不少游戏在左上角会出现玩家的头像和等级以及血量 这就是玩家的信息显示系统 那么这些是如何制作的呢 接下来我将讲讲代码的操作 其它操作我会在其它笔记中一一说明 敬请期待 信息的显示相当简单就是控制一些UI 然后在其它系统里面填写相
  • 游戏开发常见操作梳理之角色选择一

    进入游戏后 我们经常会进入角色选择的界面 通常是左右两个按钮可以更改角色供玩家选择 对于这种界面我们通常使用数据持久化将角色信息存储起来 接下来的笔记中 我将使用自带的数据持久化系统对其进行操作 实现角色的选择页面 后续会更新xml系列的文
  • 游戏开发常用实践操作之按动任意键触发

    接下来一些笔记会对于一些大大小小的实践操作进行记录 希望对你有所帮助 在游戏中 我们经常会遇到一些按动任意键触发的操作 接下来展示核心代码 以下是对于Unity中的操作 使用的UI是NGUI 对于核心操作没有影响 你可以自己置换 void

随机推荐

  • More Info for Email AdminsStatus code 554 5.4.14

    Your message to account security noreply accountprotection microsoft com couldn t be delivered account security noreply
  • System.getProperty用法

    转自 http blog darkmi com 2011 03 16 1666 html System getProperty 用于获取当前的系统属性 比如java版本 操作系统名称 区域 用户名等 这些属性一般由jvm自动获取 不能手工设
  • IQ调制的过程

    正交调制 IQ modulation IQ调制器的相移器原理 正交调制数学表达和图形化过程i显示 关键元素都在里面 普通调制的过程 PAM调制的原理 IQ modulators are versatile building blocks f
  • 如何将Visio绘制的图保存为300dpi的tif图片

    采用visio 2013绘图 用ctrl A全选绘制的图 开始 另存为 选择保存类型为tif Tif输出设置 分辨率设为300dpi 300dpi 验证一下图片分辨率 右击生成的tif文件 属性 详细信息
  • 问题记录:js的=>和function

    这个问题搞了一整天 是这么一个功能
  • 认识 maven_我的总结

    认识 maven maven Apache Maven 是一种用于软件项目管理工具 基于 Project Object Model POM 用来管理项目的构建 汇报及文档生成等功能 软件开发 开发 gt 测试 gt 安装与部署 开发阶段 依
  • Apache Flink Checkpoint 应用实践

    Checkpoint 与 state 的关系 Checkpoint 是从 source 触发到下游所有节点完成的一次全局操作 下图可以有一个对 Checkpoint 的直观感受 红框里面可以看到一共触发了 569K 次 Checkpoint
  • STM32_USB之完全双缓存(包括发送和接收) -- 更新中断处理

    STM32的USB双缓存接收代码其实已经可以在ST提供的USB示例代码中找到 只要稍加修改 就可以得到将近1MB的数据接收性能 虽然Datasheet中说明USB发送也同样可以使用双缓存 但并没有示例代码 由于为了测试性能 自己做了一个 测
  • R语言GGPLOT2绘制圆环图雷达图/星形图/极坐标图/径向图Polar Chart可视化分析汽车性能数据

    最近我们被客户要求撰写关于可视化的研究报告 包括一些图形和统计输出 漂亮的圆形图 我不确定对数据分析师本身是否有额外的好处 但如果能吸引决策者的注意 那对我来说就是额外的价值 然而 用coord polar 或偶尔发现的ggplot2中的c
  • Lua的线程和状态 及协程

    luaL loadstring L return coroutine create function end nCallResult lua pcall L 0 1 0 创建一个协程和lua newthread创建一个线程一样 不过这个创建
  • 关于mysql group_concat不得不说的事

    mysql中 group concat函数将group by产生的同一个分组中的值连接起来 返回一个字符串结果 当查询的数据过多时 group concat超出了默认值1024个字符 超过就会截断 导致group concat查询出来的数据
  • ppt怎么压缩文件大小?学会这几种方法

    ppt 用office PowerPoint 制作的幻灯片 用于编辑 播放 各种操作 简单易学 在实际的生活和办公过程中 ppt文件的应用范围非常广泛 同样的 ppt也是非常重要的工具之一 很多时候 我们需要对ppt文件进行压缩 从而满足p
  • 原理图中的电阻旁边有个”NC“,什么意思?

    NC表示此处空贴 即此处不贴任何电子器件 如果安装的话 电路会有另外的功能 或许在性能上会有变化 常用于电路板贴装技术中 电路板贴装是回流焊中的一种工艺流程 回流焊也叫再流焊 是伴随微型化电子产品的出现而发展起来的焊接技术 主要应用于各类表
  • leetcode-无重复元素的最长子串

    给定一个字符串 请你找出其中不含有重复字符的最长子串的长度 例如对于字符串 str adfhdsla 它的无重复字符的最长子串为 sub adfhdsl 很显然 首先要有一个函数用以判断当前的子串中有无重复元素 然后寻找子串的工作就要用这个
  • 闲云:unity中不能识别monobehevior关键字的问题

    有时候一些小问题很恼人 如unity中新建脚本后不能识别monobehevior关键字 在vs2017右侧的解决方案中点击刷新图标 或者把不能识别的脚本添加到vs2017右侧的解决方案中的Assets中即可 还不行就点击 排除 然后再 添加
  • QApplication和QCoreApplication

    一 QCoreApplication用于non GUI的应用程序 不需要依赖QtGui库 QApplication用于包含GUI的应用程序 需要用到QtGui库 Qt是一个开源的C 库 主要用来开发GUI程序 但同时 它也支持控制台程序的开
  • log4j使用说明

    查阅阿里的jva开发手册 我们发现在打印日志的时候有一下几条是强制的 1 应用中不可直接使用日志系统 Log4j Logback 中的API 而应依赖使用日志框架SLF4J中的API 使用门面模式的日志框架 有利于维护和各个类的日志处理方式
  • 前端自测.

    交互 宽度1200px 表单校验 长度 敏感词汇 初始化 loading 结果 空 表单重复提交 loading 请求拦截 限流 数字 大数据 千分位 文本长度 省略号 数据查询结果校验 按条件查询结果是否正确 空数据传参 xx 参数头尾有
  • go struct{} 空结构体的特点和作用

    空结构体的特点和作用 参考代码 package main import fmt unsafe func main empStruct 空结构体的实例和作用 func empStruct 空结构体的特点 1 不占用内存 2 地址不变 var
  • Input

    Unity3d的所有输入 包括键盘鼠标和智能手机触摸等都是通过这一个类来完成 Input类 见API http docs unity3d com ScriptReference Input html 输入Input类使用 建议在Updata