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就是双引号里面要 ...
随机推荐
- Oracle Tuxedo的配置文件配置详解
# (c) 2003 BEA Systems, Inc. All Rights Reserved. #ident "@(#) samples/atmi/simpapp/ubbsimple $ ...
- 【mysql】数据库Schema的优化
由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会使每个page中可存放的数据行数增大 ...
- 理解metrics.classification_report
混淆矩阵是一个矩阵,类别个数可以有多个,a[i][j]表示将类别i的样本误判为类别j的个数. classification_report用来分析不同类别的准确率,召回率,F1值等,从而便于按照类别查看 ...
- Java爬虫框架调研
Python中大的爬虫框架有scrapy(风格类似django),pyspider(国产python爬虫框架). 除了Python,Java中也有许多爬虫框架. nutch apache下的开源爬虫程 ...
- LATeX 插入脚注
LATeX 插入脚注: 使用 \footnote{...注释内容} 命令: To maximize the lower-bound $ we employ conjugate gradient me ...
- Oslo 相机 App
https://itunes.apple.com/cn/app/osho/id1203312279?mt=8.它支持1:1,4:3,16:9多种分辨率拍摄,滤镜可在取景框的实时预览,拍摄过程可与滤镜实 ...
- vim缩进参考线
编辑缩进嵌套的文件时想找到对应的层级比较困难,写了一个函数,使用cc选项设定一条辅助线,标识到指定的缩进层级.代码如下: ? ReferenceLine 1 2 3 4 5 6 7 8 9 10 11 ...
- mysqlsla快速入门
小强软件测试,因为不是天生丽质,所以必须天生励志. 性能.python自动化班长期招生,咨询QQ:2083503238 官网:http://xqtesting.sxl.cn QQ群:229390571 ...
- Android----输入模式设置
InputType的参数: 用法:((EditText)findViewById(R.id.edit)).setInputType(InputType.*); int TYPE_CLASS_DATET ...
- 解决安装Egit时Egit Mylyn和org.eclipse.team.core报错
为了让Aptana支持GitHub,需要安装Egit,但在的时候碰到两个错误,一个是关于缺少EGit Mylyn另一个是缺少org.eclipse.egit.import.feature.group. ...