(转)关于Unity中的Input输入事件

2023-11-05

截获鼠标,键盘的消息

监听事件我们都是在Update里面监听的。 

Unity的虚拟轴打开:Edit-->Project Settings-->Input,打开的各个Name就是双引号里面要填的,记不住就打开查,也可以自己定义一些按键。

 

一、Input的主要变量

1: mousePosition: 当前鼠标的像素坐标;
2: anyKey/anyKeyDown: 当前是否有按键按住;
3: inputString: 本次update时间间隔内输入的字符串;
4: acceleration: 重力加速度传感器的值,加速度的方向;
5: touches: 返回当前所有触摸对象的列表Touch[],触摸屏可以支持多根手指轨迹;

 

二、Input的主要方法

1: GetAxis/GetAxisRaw: 返回表示虚拟轴的值:
2: GetButton/GetButtonDown/GetButtonUp 虚拟按钮
3: GetKey/GetKeyDown/GetKeyUp 按下制定按钮;
4: GetMouseButton
GetMouseButtonDwon
GetMouseButtonUp
5: GetTouch(index) 返回当前触控Touch对象;
6: 打开InputManager: 配置虚拟轴;

 

三、Input使用实例

1.创建一个Canvas
2.对Canvas进行初始化
3.创建一个Image的UI节点作为Canvas的子节点,名字叫bg,拖进背景图片到这个节点中。
4.创建一个叫Game_scene的脚本,挂载到Canvas下面

5.Game_scene脚本内容:

 

void Update () {
        // 以屏幕的左下脚为原点;
        // Debug.Log(Input.mousePosition); // 当前鼠标的位置;
        // 如果一个按键一直按住,那么每帧都会返回True,只到弹起;
        // 键盘,鼠标的key
        /*if (Input.anyKey) {
            Debug.Log(Input.anyKey);
        }*/
        // 检测按键按下,但是,一旦按下以后,后面就不触发了。
        // 如果一个按键一直按着,那么这个只会按下的那帧触发true,
        /*if (Input.anyKeyDown) {
            Debug.Log(Input.anyKeyDown);
        }*/

        // 返回你在本次update里面输入的assic字符
        /*if (Input.inputString.Length > 0) {
            Debug.Log(Input.inputString);
        }*/
        // end 
        // 重力加速度的方向,那你就可以根据这个方向来获得输入。
        // 如果没有重力传感器,那么就是(0, 0, 0); Vector3的对象;
        // Debug.Log(Input.acceleration);
        // Debug.Log(Input.touchCount); // 获得当前的触摸的事件的个数;
        /*if (Input.touchCount > 0) {
            // Input.touches // Touch [];
        }*/

        // Horizontal 是这个虚拟轴,Eidt --> ProjectSetting -->Input
        // 由1-->0, 递减的插值的;
        // GetAxis 变化的时候,是有插值的。
        // float value = Input.GetAxis("Horizontal");
        /*float value = Input.GetAxisRaw("Horizontal");
        if (value != 0.0f) {
            Debug.Log(value);
        }*/

        // 距离上一次鼠标的变化; dx, dy
        /*float mouse_dx = Input.GetAxis("Mouse X");
        float mouse_dy = Input.GetAxis("Mouse Y");
        Debug.Log(mouse_dx + ":" + mouse_dy);*/

        // 不会有插值的,1,0
        // float value = Input.GetAxisRaw("Jump");
        // Debug.Log(value);
        // 鼠标左键,
        /*if (Input.GetButton("Fire1")) {
            Debug.Log("fire1 click");
        }*/
        // 只是在按钮,按下那一刻,为真,
        /*if (Input.GetButtonDown("Fire1")) {
            Debug.Log("fire1 down");
        }
        //弹起来那一刻为真
        if (Input.GetButtonUp("Fire1")) {
            Debug.Log("fire1 up");
        }*/

        // 键盘上的P按键, 如果按下不松,会一直为true
        // GetKeyDown, GetKeyUp,只在状态改变的时候为真
        /*if (Input.GetKeyDown(KeyCode.P)) {
            Debug.Log("Key p down");
        }
        if (Input.GetKeyUp(KeyCode.P))
        {
            Debug.Log("Key p up");
        }
        if (Input.GetKey(KeyCode.P)) {
            Debug.Log("P");
        }*/

        // 判断鼠标按键有没有按下, int button(0(左), 1(右), 2(中))
        if (Input.GetMouseButtonDown(2)) {
            Debug.Log("mouse left down");
        }
        if (Input.GetMouseButtonUp(2)) {
            Debug.Log("mouse left up");
        }

        // Move来使用。
        if (Input.GetMouseButton(2)) {
            Debug.Log("mouse left all ways");
        }
}

四、虚拟轴定义

1: Name: 轴的名字;
2: Descriptive: 正向方向描述;
3: Button:正向反向按钮和附加按钮;
4: Gravity:复位的速度,用于按键和鼠标;
5: Dead: 小于该值的输入值, 都会被视为0,用于摇杆。
6: Sensitivity(灵敏度): 对于键盘输入,该值越大则响应时间越快,该值越小则越平滑。对于鼠标输入,设置该值会对鼠标的实际移动距离按比例缩放
7: Snap对齐: 如果启用该设置,当轴收到反向的输入信号时,轴的数值会立即置为0,仅用于键/鼠标 输入。
8:Invert 反转: 启用该参数可以让正向按钮发送负值,反向按钮发送正值。
9:Type 类型: 所有的按钮输入都应设置为 键/鼠标 (Key / Mouse) 类型,对于鼠标移动和滚轮应设为 鼠标移动(Mouse Movement)。摇杆设为摇杆轴 (Joystick Axis),用户移动窗口设为窗口移动 (Window Movement)。
10:Axis 轴: 设备的输入轴(摇杆,鼠标,手柄等)
11:Joy Num 摇杆编号: 设置使用哪个摇杆。默认是接收所有摇杆的输入。仅用于输入轴和非按键。

 

 

五、Touch对象

1:fingerID; 手指ID
2: position 手指位置
3: deltaPosition 距离上一次的偏移;
4: phase: 触摸相位TouchPhase.Began Moved, cancel, ended;
5: Touch事件同时会触发 GetMouseButton(0)事件,能够使用Input.GetAxis("Mouse X/Y")获取触摸偏移位置;
6: 到底用Touch还是用Mouse,如果对触摸的准确性要求不高,可以使用Mouse,否则还是区别对待,使用Touch,如果要多点触控,那么自己判断,直接自己使用Touch

void Update () {
 if (Input.touchCount > 0) {
            Touch t = Input.GetTouch(0);
            // t.position; //触摸的位置;
            // t.deltaPosition; // 距离上一次,位置的偏移
            // t.phase // 触摸的相位,-->状态, 按下,滑动,弹起,cancel;
            // Touch,只在移动设备上能用,所以统一,鼠标和这个Touch,
            // Touch同时也会发送一个 鼠标左键的事件,模拟一次鼠标左键;
            // GetMouseButton(0), 鼠标,和触摸都可以当作鼠标事件来处理,那么
            // 我们的代码就只要写一次。单点触摸的时候。
            // 多点触摸,自己处理Touch事件。

            // 单点触控
            // t.position, --> mousePostion;
            // t.deltaPosition --> Input.GetAxis("Mouse X/Y");
            // Begin(Down), ended(Up), moved(Button)
            // end 
        }
}

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(转)关于Unity中的Input输入事件 的相关文章

  • Unity3D镜头眩光组件Lens Flare

    在自然界中 由于亮度差异过大的时候 容易产生镜头眩光 为了增加场景的真实性 某些情况下我们也需要用到该组件 右键点击创建一个新的flare 这是个结构比较简单的组件 只需要拖入眩光的图片即可 然后在产生眩光的灯光上添加lens Flare组
  • GAME Kit开发记录

    2D Game Kit开发记录 作为一款经典的2D游戏 seeker的构成用到了很多U3D中常用的手法和操作 其中包括角色移动 攻击 不同地形的材质处理 机关的触发 敌人系统 以及UI设置等 1 建立场景 作为整个游戏的基础 场景是玩家进入
  • 用UGUI方式实现图片的遮罩,圆角图片,圆形图片效果

    实现图片的圆角效果 圆形图片效果 是一个很常见的功能 如下 很多人会使用shader来做 但是太麻烦了 网上关于UGUI实现这种效果的方法我也一直没有找到 我这里知道一个很简单的方法 不用写一行代码 现在我打算告诉你 原理 就是通过Mask
  • Button 点击没有反应

    原因 检查一下你是不是把button TargetGraphic目标翻转了180度 因为UGUI的射线检测默认只检测正面 解决办法 在你的button检测目标也就是 TargetGraphic目标上加个GraphicRayCaster组件
  • 用Unity3D和VuforiaSDK简单做AR应用(入门)

    最近刚开始接触AR技术 结合u3d 算是对增强现实应用入个门 网上的例子不胜枚举 但有些浅尝辄止 根据自己几天来的摸索 毕竟新的技术源自国外 翻起晦涩的外文 一步一个脚印终于爬了出来 先上个史记效果图先 我取名之 鹿君下山 接下来说说步骤
  • 【01】-迟来的毕设进度记录-【场景搭建、photon实时实现联机(二)】

    嗨我又回来了 今天的任务是 场景KO掉啦 大概基础就这样 植被细节接着弄 重大突破 在动画方面进行了修改 如下图 思路是 玩家按下鼠标左键直接攻击播放攻击动画 不需要bool繁琐的判断 代码也简化 而且之前有BUG 就是玩家按着鼠标左键时
  • Unity3D 屏幕点击特效

    前言 屏幕点击特效目前用到两种 场景中特效和UI特效 其实就是坐标和层级之间的区别 无论特效用的帧动画 粒子特效亦或是贴图都可以使用 根据项目稍微调整下就好了 如果想优化的话可以写个对象池 这里就不赘述了 1 UI点击特效 注意要将Laye
  • Crest Ocean System

    最新版本支持Unity3D 2019 4 8或以上 https github com crest ocean crest
  • Unity Transparent Video

    https medium com pofu lu unity transparent video E7 94 A8 videoplayer E6 88 96 avpro E6 92 AD E6 94 BE E9 80 8F E6 98 8E
  • Unity3D-UGUI-带滚动条的滑动文本框

    1 在Canvas新建一个Panel 添加 scroll Rect和mask组件 2 Panel下新建一个Text Vertical Overflow设置成Overflow 然后添加 Content Size Fitter这个Layout
  • unity 3D 远程关机

    远程关机的方法很多 首先就是调用系统的运行命令 其次也可以费别写一个服务端和客户端 当然我们也可以借助第三方插件来实现远程关机 第一种 调用系统的运行命令 这个就非常简单了 直接打开cmd exe文件 写入关机命令就行了 System Di
  • U3D中对象的自动销毁

    很多游戏中都会重用同一个游戏对象 比如说Dota 一波兵一波兵的被对方消灭 如果尸体不会自动销毁 恐怕地图中的尸体堆积如山不说 配置再厉害的电脑也架不住 这样游戏的性能太低了 需要自动销毁的情形有 游戏对象已经并且永远消失在视野中了 天空中
  • U3D Transform基本移动函数: 移动、旋转、缩放

    1 指定方向移动 移动速度 float TranslateSpeed 10f Vector3 forward 表示 向前 transform Translate Vector3 forward TranslateSpeed 2 全方向移动
  • Unity 简单游戏编程(1) 开始界面设计

    转自 http blog csdn net qqmcy article details 9330405 using UnityEngine using System Collections public class Script 10 01
  • Unity3D如何开发最简单的VR游戏 vrPlus(神之眼)

    VR是一种可创建和体验虚拟世界 Virtual World 的计算机系统 是一种可以创建和体验虚拟世界的计算机仿真系统 它利用计算机生成一种模拟环境 是一种多源信息融合的交互式三维动态视景和实体行为的系统仿真使用户沉浸到该环境中 作为一个u
  • 修改mesh的clolors属性

    using UnityEngine using System Collections public class ExampleClass MonoBehaviour void Start Mesh mesh GetComponent
  • 引入UnityEngine.dll中的巨坑

    正确路径 C Program Files Unity Editor Data Managed 此目录下只需引用UnityEngine dll就可以访问MonoBehaviour 其他路径 C Program Files Unity Edit
  • 【Unity Shaders】抖音变身漫画1

    先来看一下手机拍出来的效果 我们发现有一张人像变成了卡通漫画脸 其它的只是做了一些图像处理 你可以再拍几张看一下 会发现千篇一律的大眼 小嘴有没有 你想的没错 这个是AI换脸技术 抖音特效里有很多了 把这个漫画脸再加上对图像的漫画处理 最后
  • unity3d之 C# WaitFOrSeconds()

    学习unity3d不久 在使用WaitFOrSeconds 时 遇到了不少麻烦 故记录 以警示后人 首先介绍C 和javascript 在使用它有很大的区别 javascript可以直接使用 yield WaitFOrSeconds 5 即
  • 从 Visual C++ 导出 U3D/PDF3D

    我被要求解决用 Visual C 编写的 CAD 应用程序在尝试将绘图导出为 PDF3D 时出现的内存使用问题 导出特征对于简单模型或仅复杂模型的一部分表现良好 但对于整个复杂模型则不然 我们使用 U3D sourceforge 项目来创建

随机推荐

  • v-for动态图片列表展示以及动态给div添加背景图片

    v for动态图片列表以及动态给div添加背景图片方法 效果如下图所示 HTML div class branchWorkshop ul li div class workshopImg div span span li ul div
  • 内网渗透-代理篇(reGeorg+Proxifier代理工具)

    声明 贝塔安全实验室公众号大部分文章来自团队核心成员和知识星球成员 少部分文章经过原作者授权和其它公众号白名单转载 未经授权 严禁转载 如需转载 请联系开白 请勿利用文章内的相关技术从事非法测试 如因此产生的一切不良后果与文章作者及本公众号
  • 无线加密技术

    无线加密技术概述 随着信息技术的不断发展 人们对通信的要求也在不断提升 近年来 由于无线局域网 Wireless LAN 可以提供灵活方便的网络接入而倍受各厂商和众多消费者的青睐 越来越多的机场 餐厅 酒吧都可提供无线接入互联网的服务 使用
  • BAPI_OUTB_DELIVERY_CHANGE - 删除整个交货单和行项目

    转载自 https archive sap com discussions thread 864267 IF delivery item IS NOT INITIAL Delete particular Delivery item SELE
  • 宽带上网知识(如何进行上网流程配置,路由器上网配置)

    中国大陆现在提供上网宽带服务的公司有 网通 铁通 电信 专业点叫 ISP 因特网服务提供商 铁通业务归属于中国移动 网通业务归属于中国联通 无论哪一家 对用户提供的都是大致一样的上网服务 即宽带业务 宽带业务是通信公司为用户提供的高速访问互
  • RuntimeWarning: divide by zero encountered in log错误解决

    问题描述 最近在学习 机器学习实战 这本书时 朴素贝叶斯那里遇到了这样的问题 def train native bayes train matrix train category num train docs len train matri
  • java并发(二)--.JMM内存模型对并发的保障

    2 JMM内存模型 1 计算机结构 输入设备 就是我们的鼠标 键盘 存储器 对应的就是我们的内存 缓存 运算器和控制器共同组成了cpu 而输出设备就比如显示屏 打印机 我们重点来聊一下缓存 2 缓存 其实 当我们说计算机运行效率低下 速度慢
  • 拓端tecdat

    最近我们被要求撰写关于ARIMA ARCH的研究报告 包括一些图形和统计输出 时间序列分析模型 ARIMA ARCH GARCH模型分析股票价格数据 相关视频 在Python和R语言中建立EWMA ARIMA模型预测时间序列 简介 时间序列
  • 初学者的卡尔曼滤波——扩展卡尔曼滤波(一)

    简介 已经历经了半个世纪的卡尔曼滤波至今仍然是研究的热点 相关的文章不断被发表 其中许多文章是关于卡尔曼滤波器的新应用 但也不乏改善和扩展滤波器算法的研究 而对算法的研究多着重于将卡尔曼滤波应用于非线性系统 为什么学界要这么热衷于将卡尔曼滤
  • 文化的特点计算机,计算机文化基础 计算机的特点与分类 计算机特点与分类.pptx...

    1 4 3计算机的特点和分类 精确性高 计算机的可靠性很高 差错率极低 一般来讲只是在人工介入的地方才有可能发生错误 存储容量大 计算机的存储性是计算机区别于其他计算工具的重要特征 存储器不但能够存储大量的信息 而且能够快速准确地存入或取出
  • SQL分类及通用语法&&数据类型(超详细版)

    一 SQL分类 SQL是结构化查询语言 Structured Query Language 的缩写 它是一种用于管理和操作关系型数据库系统的标准化语言 SQL分类如下 DDL 数据定义语言 用来定义数据库对象 数据库 表 字段 DML 数据
  • 初入vue:子组件接收props值并需要对这个值进行修改的解决办法

    vue 子组件接收props值并需要对这个值进行修改的解决办法 最进刚刚从微信小程序转过来 发现了vue与其有很大的相似之处 相比之下vue确实是方便了很多 特别是vue的 双向绑定 对于组件的话vue方面限制了子组件对父组件穿来的值的修改
  • 用虚拟串口进行串口调试

    由于现在的笔记本电脑一般不带有串口 再进行串口调试时 可以用虚拟串口代替 虚拟串口下载链接 虚拟串口 Win7 下载 串口调试助手下载链接 串口调试助手 VS2010串口程序 使用的unicode库 纯API 不利用Mscomm控件 下载链
  • bulk interface驱动_USB驱动程序(较详细)一

    拓扑结构上 一个 USB 子系统并不是以总线的方式来分布 它是一棵由几个点对点连接构成的树 这些连接是连接设备和集线器的4线电缆 地 电源 和 2 个差分信号线 如同以太网的双绞线 USB主控制器负责询问每个USB设备是否有数据需要发送 由
  • ‘VB6EXT.OLB’ could not be registered

    打开VB6提示 VB6EXT OLB could not be registered 解决办法 用管理员打开 实测可行 参考 VB6 Error please help VBForums
  • el-select-dropdown 修改下拉框的样式

    问题描述 使用el select的时候有时候需要修改下拉框的样式 但是el select dropdown必须添加类名才能修改他的样式 问题解决 1 popper class element提供了为下拉框绑定类名的api 绑定类名之后使用
  • 利用python在网上接单赚钱,兼职也能月入过万,还不赶紧学起来

    看完这篇回答至少给你省去95 找答案的时间 我觉得python接单我是最有发言权的 从2016年进入大学 我就是一个不安分的学生 总是想着通过自己的技术来实现财富自由 我崇拜雷军 我觉得雷布斯不仅技术强 而且很有商业头脑 可是我是个呆呆的瓜
  • PID控制原理解释

    PID控制原理解释 文章目录 PID控制原理解释 0 前言 1 控制原理图解释 2 算法分析 3 PID数学模型解释 4 调参技巧说明 0 前言 参考网址 http blog gkong com liaochangchu 117560 as
  • Python 之os.walk()方法

    os walk方法 主要用来遍历一个目录内各个子目录和子文件 这个对于文件夹下遍历所有文件非常好用 对于数据处理也是很常见 os walk top topdown True nerr r None followlinks False 可以得
  • (转)关于Unity中的Input输入事件

    截获鼠标 键盘的消息 监听事件我们都是在Update里面监听的 Unity的虚拟轴打开 Edit gt Project Settings gt Input 打开的各个Name就是双引号里面要填的 记不住就打开查 也可以自己定义一些按键 一