u3d中的INput
属性
属性: | 功能: |
---|---|
轴 (Axes) | 包含当前工程的所有定义的输入轴:数目 (Size) 该工程中不同输入轴的数量,元素 0、1、... 是要修改的特定的轴。 |
名称 (Name) | 在游戏启动器中以及通过脚本处理时用于指称特定轴的字符串。 |
描述性名称 (Descriptive Name) | 显示在游戏启动器中的正向按钮 (Positive Button) 功能的详细定义。 |
描述性负向名称 (Descriptive Negative Name) | A显示在游戏启动器中的负向按钮 (Negative Button)功能的详细定义。 |
负向按钮 (Negative Button) | 将负值发送给轴的按钮。 |
正向按钮 (Positive Button) | 将正值发送给轴的按钮。 |
Alt 负向按钮 (Alt Negative Button) | 将负值发送给轴的辅助按钮。 |
Alt 正向按钮 (Alt Positive Button) | 将正值发送给轴的辅助按钮。 |
重力 (Gravity) | 输入回到中心位置的速度。只有当类型 (Type) 是键盘/鼠标按钮时才使用。 |
无效 (Dead) | 任何小于该数值的正值或负值都将记为零。适用于游戏杆。 |
灵敏度 (Sensitivity) | 对于键盘输入来说,数值越大,响应时间越快。较低值会更加平滑。对于鼠标增量,该数值会计算出真实的鼠标增量。 |
捕捉 (Snap) | 若启用,则在收到反向输入后,轴的数值会立即重置为零。 只有当类型 (Type) 是键盘/鼠标按钮时才使用。 |
反转 (Invert) | 若启用,则正向按钮会将负值发送给轴,反之亦然。 |
类型 (Type) | 键盘/鼠标按钮 (Key/Mouse Button)用于任何类型的按钮,鼠标移动 (Mouse Movement) 用于鼠标增量和滚轮,游戏杆轴 (Joystick Axis) 用于模拟游戏杆轴,而窗口移动 (Window Movement) 在玩家晃动窗口时使用。 |
轴 (Axis) | 来自设备(游戏杆、鼠标、手柄等)的输入的轴 |
游戏杆号 (Joy Num) | 应该使用哪个游戏杆。默认情况下设置为检索来自所有游戏杆的输入。仅用于输入轴,不包括按钮。 |
PS : Unity内并没有内建android(返回与选单)功能键设定,必须使用者自行设定,在Inpu.GetButton(“ ”)中”escpae”&”menu”有对应返回与选单键
虚拟轴:将键盘,操纵杆和游戏手柄上的按键映射到u3d中。。达到轴的效果。既然是轴则有正向和负向按钮
例: if(Input.GetKeyDown (“escpae”)){ Application.Quit(); } 按下返回就退出
Input.GetAxis(需求的是按下的过程)
适用于运动行为
- 水平线 (Horizontal) 和垂直线 (Vertical) 映射至 w、a、s、d 和方向键。
- Fire1、Fire2、Fire3 分别映射至 Control、Option (Alt) 和 Command 键。
- Mouse X 和 Mouse Y 映射至鼠标移动增量。
- Window Shake X 和 Window Shake Y 对应窗口的移动。
使用控制器和键盘输入时此值范围在-1到1之间。如果坐标轴设置为鼠标运动增量,鼠标增量乘以坐标轴灵敏度的范围将不是-1到1 。
var translation : float = Input.GetAxis ("Vertical") * speed; //ws 上下键
var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed;//ad 左右键
var h : float = horizontalSpeed * Input.GetAxis ("Mouse X"); 鼠标在水平方向的移动
var v : float = verticalSpeed * Input.GetAxis ("Mouse Y"); 鼠标在垂直方向的移动
Input.GetAxisRaw 获取原始轴
键盘和控制器取值范围在-1...1之间,此时输入没有使用平滑。键盘输入必然会是-1、0或1。这一点在你想自己处理键盘平滑输入时很实用。
Input.GetButton (需求的是判断是否被按下) 总是按住
想象一下自动开火 - 如果按钮一直被按住此方法将永远返回true。只有当执行像武器射击这样的事件时才可用此方法,Input.GetAxis适用于各种运动行为。
Input.GetButtonDown 按下那一刻
在给定名称的虚拟按钮被按下的那一帧返回true。你需要在Update方法中调用这个方法,此后每一帧重置状态时,它将不会返回true除非用户释放此按键然后重新按下。
Input.GetButtonUp 获取按钮弹起 弹起那一刻
Input.GetKey 获取键
Input.GetKeyDown 获取键按下
Input.GetKeyUp 获取键弹起
Input.GetAxisXXX Input.GetButton Input.GetKeyXXX函数在台式机平台上非常方便,可强化键盘和手柄输入。然而该函数对依靠触摸屏输入的移动平台来说毫无意义。同样,对任何内容来说标准台式机键盘输入都无法很好地移植到移动装置,键入文本除外。
Input.GetMouseButton 获取鼠标按钮
Input.GetMouseButtonDown 获取鼠标按钮按下
Input.GetMouseButtonUp 获取鼠标按钮弹起
Input.GetMouseButtonXXX 函数被设计出来,即使没有“鼠标”,也能明显地合理解读移动设备,单点触摸屏幕报告为左键单击,只要手指触摸屏幕,Input.mousePosition 属性就能给出点击位置。也就是说带简单鼠标互动操作的游戏通常可在台式机和移动平台上正常工作。当然,两者之间的转换往往要复杂得多。台式机游戏能利用一个以上鼠标按键,而移动游戏可同时检测到多点触摸。
Input.GetTouch 获取触摸
Input.touchCount ~ 触碰数量
Input.GetTouch(0) ~ 当第一支手指触碰时
0=第一支1=第二支2=第三支以此类推(触碰到点的侦测数量上限未测不知)
TouchPhase ~ 触碰状态有分五种Began Moved Stationary Ended Canceled
Began按下Moved移动Stationary按住没移动Ended离开
Canceled用于触碰超过5点以上或贴至脸上时取消追踪
Input.GetTouch(0).position 取得第一支手指触碰座标
例 :
Touch 单点移动判断式
if(Input.touchCount == 1 && Input.GetTouch(0).phase==TouchPhase.Moved){执行}
(触碰数量为1个) 和(第一支手指触碰时的状态为移动) 时{执行}
Touch 双点移动判断式
if(Input.touchCount >1){
if(Input.GetTouch(0).phase==TouchPhase.Moved || Input.GetTouch(1).phase==TouchPhase.Moved){ 执行}}
(触碰数量超过1个) 和
(第一支手指触碰时的状态为移动)或着(第二支手指触碰时的状态为移动) 时{执行}
Input.GetAccelerationEvent 获取加速度事件
Input.GetJoystickNames 获取控制杆名称列表
Input.ResetInputAxes 重置输入轴
射线:射线是3D世界中一个点向一个方向发射的一条无终点的线,在发射轨迹中与其他物体发生碰撞时,它将停止发射 。
用途:射线应用范围比较广, 多用于碰撞检测(如:子弹飞行是否击中目标)、角色移动等 等。
相关API:
1、Ray Camera.main.ScreenPointToRay(Vector3 pos) 返回一条射线Ray从摄像机到屏幕指定一个点
2、Ray Camera.main.ViewportPointToRay(Vector3 pos) 返回一条射线Ray从摄像机到视口(视口之外无效)指定一个点
3、Ray 射线类
4、RaycastHit 光线投射碰撞信息
5、bool Physics.Raycast(Vector3 origin, Vector3 direction, float distance, int layerMask)
当光线投射与任何碰撞器交叉时为真,否则为假。
bool Physics.Raycast(Ray ray, Vector3 direction, RaycastHit out hit, float distance, int layerMask)
在场景中投下可与所有碰撞器碰撞的一条光线,并返回碰撞的细节信息()。
bool Physics.Raycast(Ray ray, float distance, int layerMask)
当光线投射与任何碰撞器交叉时为真,否则为假。
bool Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit out hit,float distance, int layerMask)
当光线投射与任何碰撞器交叉时为真,否则为假。
注意:如果从一个球型体的内部到外部用光线投射,返回为假。
参数理解:
origin : 在世界坐标中射线的起始点
direction: 射线的方向
distance: 射线的长度
hit: 使用c#中out关键字传入一个空的碰撞信息类,然后碰撞后赋值。可以得到碰撞物体的transform,rigidbody,point等信息。
layerMask: 只选定Layermask层内的碰撞器,其它层内碰撞器忽略。 选择性的碰撞
6、RaycastHit[] RaycastAll(Ray ray, float distance, int layerMask)
投射一条光线并返回所有碰撞,也就是投射光线并返回一个RaycastHit[]结构体。
下面一个利用射线做的拾取的小例子(将代码直接拖拽到主相机上)

1 using UnityEngine;
2 using System.Collections;
3
4 public class RayTest : MonoBehaviour {
5
6 // Use this for initialization
7 void Start () {
8
9 }
10
11 // Update is called once per frame
12 void Update ()
13 {
14 if(Input.GetMouseButton(0))
15 {
16 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//从摄像机发出到点击坐标的射线
17 RaycastHit hitInfo;
18 if(Physics.Raycast(ray,out hitInfo))
19 {
20 Debug.DrawLine(ray.origin,hitInfo.point);//划出射线,只有在scene视图中才能看到
21 GameObject gameObj = hitInfo.collider.gameObject;
22 Debug.Log("click object name is " + gameObj.name);
23 if(gameObj.tag == "boot")//当射线碰撞目标为boot类型的物品 ,执行拾取操作
24 {
25 Debug.Log("pick up!");
26 }
27 }
28 }
29 }
30 }

u3d中的INput的更多相关文章
- U3D中GameObject.Find无法找到元件
U3D中GameObject.Find 如果某元件SetActive(false)了,Find()无法找到 因为Find()只会帮你找出正在活动中的物件,所以在将物件关闭前,我们必须将此物件放至预先定 ...
- python 中的input
渣渣之路. 一. 在python编程初学者指南中的第六章.使用参数和返回值的例子中: # -*- coding: utf-8 -*- def display(message): print messa ...
- view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的
view视图文件中的input等输入框必须含有name属性,不然控制器里的动作formCollection是没有值的,就是没有name属性,后台获取不到值
- 数组乘积--满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出
数组乘积(15分) 输入:一个长度为n的整数数组input 输出:一个长度为n的整数数组result,满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出). ...
- webView中支持input的file的选择和alert弹出
alert()弹出 input的file现选择(特别说明:不同的android版本弹出的样式不同,选择文件后自动上传) webView.setWebChromeClient(new WebChrome ...
- jQuery 在Table中选择input之类的东西注意事项
jQuery 在Table中选择input之类的东西注意事项: 如果不在td标签中,是不能进行正确选择的: <table id="tblFormId"> <tr& ...
- 页面中引入mui 地址选择,点击页面中其他input时页面回到顶部
问题:在页面中引入mui地址选择时,点击页面中的input页面会滚到顶部(谷歌浏览器中出现的bug),在手机上点击input会出现跳动.开始的时候是想修改mui.min.js里的滚动事件,但是后来找到 ...
- jquery中选择器input:hidden和input[type=hidden]的区别
关于选择器:hidden的说明,在jquery说明文档中是这样说的:匹配所有不可见元素,或者type为hidden的元素.而[type=hidden]是查找所有type属性等于hidden的元素.两者 ...
- 关于Unity中的Input输入事件
截获鼠标,键盘的消息 监听事件我们都是在Update里面监听的. Unity的虚拟轴打开:Edit-->Project Settings-->Input,打开的各个Name就是双引号里面要 ...
随机推荐
- linux下如何查看多核负载情况【转】
最近服务器负载超荷,CPU的单个荷使用率到了百分之八九十,内存占用超大,让给检测性能,不给源码,只给一个+ -g编译生成的执行文件,Fuck!!! 1, 在linux下载了valgrind,使用val ...
- 使用import简化spring的配置 spring import 标签的解析 使用import或加载spring配置时,报错误There is no ID/IDREF 多个Spring配置文件import resource路径配置
spring-import 标签的解析.使用案例: 对于spring配置文件的编写,我想,对于经历过庞大项目的人,都有那种恐惧的心理,太多的配置文件.不过,分模块都是大多数人能想到的方法,但是,怎么分 ...
- SmartUpload类实现上传和下载
实现文件的上传与下载,可以使用Java的I/O流的类来实现,也可以使用专业的上传.下载组件.这些组件提供了现成的类,程序员只需调用这些类中的方法即可实现文件的上传与下载.本章将向读者介绍如何应用jsp ...
- ural 1091. Tmutarakan Exams(容斥)
http://acm.timus.ru/problem.aspx? space=1&num=1091 从1~s中选出k个数,使得k个数的最大公约数大于1,问这种取法有多少种. (2<=k ...
- weblogic+eclipse插件部署多个项目
第一篇博客...上班时间不多废话,直接上图. 首先环境我就不说了,装好weblogic,eclipse,以及weblogic的插件. eclipse的weblogic插件能够从eclipse上的Hel ...
- Internet上的WWW服务与HTTP协议(非常非常不错的文档,推荐订阅)
Internet上的WWW服务与HTTP协议 兼容性----H1TP/1.1与HTTP/1.0后向兼容;运行1.1版本的web服务器可以与运行1.0版本的浏览器“对话”,运行1.1版本的浏览器也可以与 ...
- 第一篇:初识ASP.NET控件开发_第一节:控件类及其继承关系
1)System.Web.UI.Control(以下简称Control) Control 类是包括自定义控件.用户控件和页在内的所有 ASP.NET 服务器控件的基类..定义由所有 ASP.NET 服 ...
- 关于QueryCache的一次打脸
[背景问题] 前一段时间给一套MySQL数据库加上了监控,运行一段时间后有人反馈监控到的insert,update,delete,select的数量中select的数量有像比 本应该的量少了不少! 我 ...
- Python语言的有限状态机实现样例
#!/usr/bin/env python3 class Connection(object): def __init__(self): self.change_state(ClosedConnect ...
- mysql在插入或更新的时候对一个字段赋递增值
在我们有一个需求是更新某个表里面的某个字段,让这个字段变成一个递增的值,或者插入某个表中使得某些字段的值是递增的.下面我们来看看具体的操作: 更改表字段为递增 首先设置一个变量,初始值为任意数值,这里 ...