Unity3d-输入-Input
2015-11-18 15:04
645 查看
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.
点击鼠标:鼠标左键为0,右键为1,滚轮为2.
通过菜单Edit–>Project Settings–>Input可打开InputManager。
在代码里可以如下使用InputManager
其中有效的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()代替GetKey(),项目后期更方便修改。
输入管理类InputManager专门为Axis设置了参数
Dead: 表示最小作用区域,当触摸或者摇杆小于这个值则认为没有输入
Gravity:表示松开按键时,从端点(1或者-1)返回缺省值(0)的速度
Sensitivity:表示按下按键时,从缺省值(0)行驶到端点(1或者-1)的速度
Snap: 闪电反向的作用
不勾选:-1逐渐变到0再逐渐变到1;
勾选上:-1立刻变为0再逐渐变到1。
以下方法要求组件的Collider必须打开,否则都将检测不到鼠标。
见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
触摸输入
主要有以下变量与方法Input.multiTouchEnabled Input.simulateMouseWithTouches Input.touchCount Input.touches Input.touchSupported Input.GetTouch()
输入管理
输入管理–InputManager通过菜单Edit–>Project Settings–>Input可打开InputManager。
在代码里可以如下使用InputManager
var input = Input.GetButton ("Horizontal");//按下为true,否则为false,建议使用GetButton()代替GetKey() var input = Input.GetAxis ("Horizontal");//取得-1到1的值,无输入则为0
键盘输入
主要有以下方法Input.GetAxis() //返回float值而不是布尔值,从-1到1之间 Input.GetAxisRaw()//返回非区间,而是端点值(-1,0,1)或者摇杆的位置 Input.GetButton() //按下状态瞬间为true Input.GetButtonDown()//按下瞬间为true Input.GetButtonUp()//弹起瞬间为true Input.GetKey()//点击返回true,其他情况返回false
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"); }
其中有效的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; } }
GetAxis()方法
返回float值而不是布尔值,从-1到1之间输入管理类InputManager专门为Axis设置了参数
Dead: 表示最小作用区域,当触摸或者摇杆小于这个值则认为没有输入
Gravity:表示松开按键时,从端点(1或者-1)返回缺省值(0)的速度
Sensitivity:表示按下按键时,从缺省值(0)行驶到端点(1或者-1)的速度
Snap: 闪电反向的作用
不勾选:-1逐渐变到0再逐渐变到1;
勾选上:-1立刻变为0再逐渐变到1。
MonoBehavior的鼠标事件
类似Start()和Update()方法一样,以下鼠标方法在MonoBehavior子类可以直接使用。以下方法要求组件的Collider必须打开,否则都将检测不到鼠标。
void OnMouseEnter(){}//鼠标进入区域 void OnMouseOver(){}//鼠标停留在区域内 void OnMouseExit(){}//鼠标离开区域 void OnMouseDown(){}//鼠标按下 void OnMouseUp(){} //鼠标松开 void OnMouseDrag(){}//鼠标拖拽 void OnMouseUpAsButton(){}
相关文章推荐
- unity 3D在调用JsonFx遇到的问题及解决
- unity3d shader中RenderType的所有类型
- 关于Unity3D的学习曲线问题
- Unity Shader 剔除黑色背景
- 如何在android中用代码修改unity模型界面
- Unity3d与iOS交互开发——接入平台SDK必备技能
- UNITY3D与iOS交互解决方案 [
- unity3d 嵌入iOS的 In App Purchase 应用程序内购买
- Unity Mecanim在大型mmo中的应用
- unity Transform类
- unity中实现压缩解压功能
- unity中实现断点续传功能
- 在unity的player角色控制中实现MVC模式
- 【笨木头Unity】入门之旅010(完结):Demo之四处找死(五)_UI
- Bounds.IntersectRay 相交射线
- Unity键值意义
- 大量信息渠道和快速提高的途径 - 快速驾驭Unity
- [Unity热更新]动态加载
- Unity Application.persistentDataPath 空值
- [unity3D]游戏优化方法