Input:

  1、使用这个类能够读取输入管理器设置的按键,以及访问移动设备的多点触控或加速感应数据。想要读取轴向使用Input.GetAxis方法获取下列默认轴: "Horizontal" 和"Vertical" 映射于控制杆、A、W、S、D和箭头键(方向键)。

  2、"Mouse X" 和"Mouse Y" 映射于鼠标,"Fire1", "Fire2" "Fire3"映射于键盘的Ctrl、Alt、Cmd键和鼠标中键或控制器的按钮。新的输入设置可以使用输入管理器来添加。

  3、如果你使用Input制作某种运动行为可以使用Input.GetAxis方法,它能够返回来自键盘、控制器或鼠标平缓并且可以设置的输入结果。使用Input.GetButton方法只用于像事件之类的动作。不要将它用于移动动作。Input.GetAxis方法可以使脚本代码更简洁。

  4、注意:每次输入在"Update()"之前不会再更新,所以建议你将所有的输入调用都写在Update方法中。(Update循环中)

虚拟轴:用户在键盘和鼠标上的操作的监测可以控制物体或者角色平滑的运动

  5、移动设备:iOS和Android设备能够支持多点触控。你可以通过Input.touches属性集合访问在最近一帧中触摸在屏幕上的每一根手指的状态数据。

  6、当设备移动时,它们的加速感应器硬件将报告它们在三维空间中沿着三个主轴的线性加速变化数据。你可以使用这些数据检测设备当前的移动方向(相对于地面)和突然间的方向改 变。

  7、硬件沿着某感应一轴加速就会立即返回重力值。如果值为1.0代表沿着给定轴的方向+1g的重力加速度,如果值为-1.0代表-1g的重力加速度。如果你保持设备垂直(主页键在下方)在你正前方,那么X轴就是指向你右侧的方向,Y轴指向正上方,Z轴就是你所面向的方向。

  8、你可以读取Input.acceleration属性获得设备的加速度信息。你也可以使用Input.deviceOrientation属性获取设备在三维空间中的方位偏移。检测方位变化在你想要制作游戏行为中会非常有用,当用户转动设备或拿着设备时它是不同的。

  9、注意:速度感应装置在每一帧中能够轮询多次,想访问上一帧的所有速度样本你可以读取Input.accelerationEvents属性集合。这在重组玩家动作中会非常有用。例如将加速数据放入一个预测器中或者实现其他一些精确的动作捕捉。

  • 名称(Name):名称用于从脚本使用这个轴
  • 描述名称(Descriptive Name):正值名称显示于配置对话框的输入标签,用于独立版。
  • 描述负名称(Descriptive Negative Name):负值名称显示于配置对话框的输入标签,用于独立版。
  • 负按钮(Negative Button):该按钮用于在负方向移动轴  (如:左)
  • 正按钮(Positive Button):该按钮用于在正方向移动轴   (如:右)
  • 备选负按钮(Alt Negative Button):备选按钮用于在负方向移动轴(如:a)
  • 备选正按钮(Alt Positive Button):备选按钮用于在正方向移动轴 (如:d)
  • 重力(Gravity):当没有按钮被按下,在单位每秒速度,轴下降到0。
  • 死亡(Dead):模拟的死区大小。 设定范围内所有模拟设备的值为0。
  • 灵敏度(Sensitivity):在单位每秒速度,轴将移向目标值。这近用于数码设备。
  • 捕捉(Snap):如果启用,当按下相反方向的按钮,该轴值将重设为0。
  • 反向(Invert):如果启用,负按钮将提供一个正值,反之亦然。
  • 类型(Type):控制轴的输入设备类型
  • 轴(Axis):连接设备的轴将控制这个轴 (因为上面正负按钮设置的是左右,所以这里要选X轴)
  • 操作杆(Joy Num)连接操纵杆将控制这个轴

一、旋转、移动:

  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class CarAxis : MonoBehaviour
  5. {
  6.  
  7. public float speed = ;
  8. public float rotateSpeed = ;
  9.  
  10. void OnGUI()
  11. {
  12. //Input.GetAxis()使用控制器和键盘输入时此值范围在-1到1之间。如果坐标轴设置为鼠标运动增量,鼠标增量乘以坐标轴灵敏度的范围将不是-1到1 。
  13.  
  14. float translation = Input.GetAxis("Vertical") * speed;//垂直的 :上下
  15.  
  16. float rotation = Input.GetAxis("Horizontal")*rotateSpeed;//水平的 : 左右
  17.  
  18. translation *= Time.deltaTime;//每秒增量
  19. rotation *= Time.deltaTime;
  20.  
  21. transform.Translate(new Vector3(, , translation));//控制物体在z轴上运动
  22. transform.Rotate(new Vector3(, rotation, ));//在y轴旋转
  23. }
  24. }

二、其他虚拟轴按钮

2.1、GetKey(name:String) 直接只用字符串 eg:Input.GetKey("up"):

  GetKey(key:KeyCode) 键盘键 eg:Input.GetKey(KeyCode.DownArrow)

  GetKey检测的是长按事件,只要按下并保持则一直返回真,GetKeyDown\GetKeyUp按下的那一瞬间返回真,抬起按钮再次按时才返回真

2.2、GetButton(button:String)按钮的名字 一般是虚拟轴的名称(定义):

  GetAxis() 和GetButton()区别:GetButton常用于一些事件性的虚拟轴 如:fire射击 是对应某个按键而不是检测一些按键的数值范围

Unity3D笔记 英保通四 虚拟轴应用及键盘事件的更多相关文章

  1. Unity3D笔记 英保通八 关节、 布料、粒子系统

    一.关节1.1..链条关节 Hinge joint :他可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力 1.2.. ...

  2. Unity3D笔记 英保通二

    一.访问另一个物体 1.代码中定义一个public的物体 例如:var target:Transform; 在面板上直接拖拽一个物体赋值给target 2.通过GameObject.Find(&quo ...

  3. Unity3D笔记 英保通一

    一.材质和着色器 1.材质和着色器紧密的联系,其中材质相当于是一个框架,而着色器就是框架中中的内容.在材质框架中可以选择不同的Shader并调节不同的 属性 Material和Physic Mater ...

  4. Unity3D笔记 英保通十 射线碰撞器检测

    射线碰撞检测可以用来检测方向和距离: 通过Physics.RayCast光线投射来实现:常用于射击利用发射的射线来判断.还有对战中刀剑交战中.. 一.要涉及到RayCast和RayCastHit 1. ...

  5. Unity3D笔记 英保通九 创建数

    Unity中创建树:可以直接通过程序自动来创建树木还可以手动创建树木(本质上在我看来就是给程序自动创建的树动动”小手术“) 一.程序自动创建树木 3.1.层次视图中创建:一个平行光.摄像机.地.数并且 ...

  6. Unity3D笔记 英保通七 物理引擎

    给球体添加刚体RigidBody和球体碰撞器Sphere Collider 效果: OnTriggerEnter() 代码 using UnityEngine; using System.Collec ...

  7. Unity3D笔记 英保通六 角色控制器

    一.角色控制器 U3D有两种角色控制方式:Rigidbody刚体.角色控制器组件(胶囊体组件) 面试的题目中经常会遇到这个问题: CharacterController和Rigidbody的区别? 这 ...

  8. Unity3D笔记 英保通五 鼠标事件与GUI系统双击检测

    一.如何使用GUI事件来检测鼠标是否按下的事件: 获取当前事件:var e:Event=Event.current: using UnityEngine; using System.Collectio ...

  9. Unity3D笔记 英保通三 脚本编写 、物体间通信

    一.脚本编写 1.1.同一类型的方法JS和C#的书写方式却不一样主要还是语法,在工程中创建一个Cube 分别把JSTest.js和CSharp.cs 添加到Cube中 JSTest.js #pragm ...

随机推荐

  1. SSH上传和下载文件

    备个份: 一,ssh上传文件 scp file username@hostIP:文件地址 例: [zhangy@BlackGhost ~]$ scp test.sql zhangying@192.16 ...

  2. Android:AS与Unity3D之间打包的各种坑及解决方案

    作者:DrkCore (http://blog.csdn.net/DrkCore) 原文链接:(http://blog.csdn.net/drkcore/article/details/5207937 ...

  3. python中,如有个非常长的字符串,在写的时候如何将其分隔

    说明: 比如,有个长字符串,Put several strings within parentheses to have them joined together.但是我在写脚本的时候, 想要放在多行 ...

  4. Xcode工程添加第三方文件的详细分析 Create folder references for any added folders(转)

    在开发iOS项目的时候需要导入第三方的库文件,但是通过Xcode导入第三方源文件的时候会提示一些信息,不知所以然. 现在看到的文档都是针对Xcode3的,针对Xcode4的说明很少,现在分享出来. 官 ...

  5. 解压安装的tomcat, 使用chkconfig命令让tomcat 随机启动,tomcat 变为系统服务

    使用解压安装的tomcat包,命令行输入 service tomcat start 会报 tomcat: unrecognized service 错误提示,意思是说系统没有找到该服务. 好了,我们现 ...

  6. 自定义tag标签-实现long类型转换成Date类型

    数据库里存储的是bigint型的时间,entity实体中存放的是long类型的标签,现在想输出到jsp页面,由于使用的是jstl标签,而要显示的是可读的时间类型,找来找去有个 fmt:formatDa ...

  7. [AX2012]代码更改默认财务维度

    在前文(http://www.cnblogs.com/duanshuiliu/p/3243048.html)最后演示了如何使用代码更改默认财务维度,那段代码模拟了创建各数据表记录的过程,实际上AX提供 ...

  8. scala函数demo

    /** * Created by root * Description : 柯里化函数,偏应用函数,匿名函数,高阶函数 */ object FunctionTest { def main(args: ...

  9. [Command] sync - 同步内存与硬盘数据

    sync - 同步内存与硬盘之间的数据. sync [--help] [--version] sync 命令将内存中缓存的数据写入磁盘.这包括但不限于修改过的 superblock, inode 和延 ...

  10. MongoDB安装问题以及启动

    在安装MongoDB的文件中找到bin文件,其中有mongo.exe应用程序,双击打开会出现第二幅图的样子. 将MongoDB服务器作为Windows服务运行,运行后,不知道为什么无法启动,即使删除d ...