Unity中Input 方法总结
来源:互联网 发布:唐山it培训 编辑:程序博客网 时间:2024/05/17 06:15
Input
•包装了输入功能的类,可以读取输入管理器中设置的按键, 以及访问移动设备的多点触控或加速感应数据。
•建议在Update中监测用户的输入。
引入
Ø 什么是 Input 类
•包装了输入功能的类,可以读取输入管理器中设置的按键, 以及访问移动设备的多点触控或加速感应数据。
•建议在Update中监测用户的输入
鼠标输入
Ø 获取鼠标输入
•当指定的鼠标按钮被按下时返回true
bool result=Input.GetMouseButton(0);
•在用户按下指定鼠标按键的第一帧返回true
bool result= Input. GetMouseButtonDown(0);
•在用户释放指定鼠标按键的第一帧返回true
bool result= Input. GetMouseButtonUp(0);
•按钮值设定:
0对应左键 , 1对应右键 , 2对应中键。
输入管理器(虚拟轴)
InputManager(输入管理器):
Edit—>ProjectSettings—>Input
使用脚本通过虚拟轴名称获取自定义键的输入。
作用:玩家可以在游戏启动时根据个人喜好对虚拟轴进行修改。
用虚拟按钮绑定按键:
水平负方向2个按钮left和a,正方向2个按钮right和d,可修改
Type可选择键盘鼠标输入
Axis可修改X轴方向Y轴方向滚轮等
默认绑定最多4个按键,若还想多,就再弄一个同名字的虚拟轴。
若修改的名称格式不对,光标移开会自己清除,照着默认格式写。
Descriptive Name:
游戏加载界面中,正向按键的详细描述。
•Descriptive Negative Name:
游戏加载界面中,反向按键的详细描述。
•Negative Button:该按钮会给轴发送一个负值。
•Positive Button:该按钮会给轴发送一个正值。
•Alt Negative Button:给轴发送负值的另一个按钮。
•Alt Positive Button:给轴发送正值的另一个按钮。
•Gravity:输入复位的速度,仅用于类型为键/鼠标的按键。
•*Dead:任何小于该值的输入值(不论正负值)都会被视为0, 用于摇杆。
•Sensitivity:灵敏度,对于键盘输入,该值越大则响应时间 越快,该值越小则越平滑。对于鼠标输入,设置该值会对鼠 标的实际移动距离按比例缩放。
•Snap:如果启用该设置,当轴收到反向的输入信号时,轴 的数值会立即置为0,否则会缓慢的应用反向信号值。仅用 于键/鼠标输入。
•Invert:启用该参数可以让正向按钮发送负值,反向按钮发 送正值。
•Type类型:
--键/鼠标(Key/ Mouse) ,
--鼠标移动和滚轮(Mouse Movement),
--摇杆(Joystick Axis) 。
•Axis:设备的输入轴(摇杆,鼠标,手柄等)
•*Joy Num:设置使用哪个摇杆。默认是接收所有摇杆的输 入。仅用于输入轴和非按键。
键盘输入
Ø 获取键盘输入
•当通过名称指定的按键被用户按住时返回true
bool result=Input.GetKey(KeyCode.A);
•当用户按下指定名称按键时的那一帧返回true
bool result=Input. GetKeyDown(KeyCode.A);
•在用户释放给定名称按键的那一帧返回true
bool result=Input.GetKeyUp(KeyCode.A);
练习1:瞄准镜
empty////// 镜头缩放/// public class CameraZoom : MonoBehaviour{ private bool isFar = true; private Camera camera; private void Start() { camera = GetComponent(); } private void Update1() { if (Input.GetMouseButtonDown(1)) { //按下鼠标右键 isFar = !isFar;//改变状态 if (isFar) { //拉远 20 --> 60 camera.fieldOfView = 60; } else { //拉近 60 --> 20 camera.fieldOfView = 20; } } } private void Update2() { if (Input.GetMouseButtonDown(1)) { //按下鼠标右键 isFar = !isFar;//改变状态 } //每帧执行 if (isFar) { //拉远 20 --> 60 if (camera.fieldOfView < 60) camera.fieldOfView += 2; } else { //拉近 60 --> 20 if (camera.fieldOfView > 20) camera.fieldOfView -= 2; } } //插值 Lerp:根据比例返回起点/终点之间的数值。 private void Update3() { if (Input.GetMouseButtonDown(1)) { //按下鼠标右键 isFar = !isFar;//改变状态 } //每帧执行 if (isFar) { //拉远 20 --> 60 //起点向终点无限接近、终点与比例不变 //现象:由快到慢 camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 60, 0.1f); } else { //拉近 60 --> 20 camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, 20, 0.1f); } } //多个缩放等级60 50 20 public int[] zoomLevel; private int index; private void Update() { if (Input.GetMouseButtonDown(1)) { //按下鼠标右键 //如果当前索引小于最大索引 ? 索引增加 : 返回第一个索引 //index = index < zoomLevel.Length - 1 ? index + 1 : 0; index = (index + 1) % zoomLevel.Length;// 周期性的变化 } camera.fieldOfView = Mathf.Lerp(camera.fieldOfView, zoomLevel[index], 0.1f); //虚拟按钮 真实按键 if (Input.GetKey(KeyCode.W)) { transform.Translate(0, 0, 1); } }}
- Unity中Input 方法总结
- unity中Input的几个方法
- Unity中Input.GetAxis方法的返回值含义
- Unity 3d中相关方法总结
- Unity中物体运动方法总结
- unity 开发中 C# 常用的方法总结(一)
- unity ------- input
- Unity Input
- Unity中Invoke方法
- Python中几个input方法
- Unity读取Excel方法总结
- unity项目方法总结1
- unity项目总结方法2
- Unity性能优化方法总结
- 王立平--Unity中控件总结
- Unity中DoTween使用总结
- unity中调用dll(char*,以及带有函数指针的参数)方法总结
- Unity Input 鼠标模拟
- FFmpeg源码剖析-通用:avcodec_register_all()
- HDU 6203 ping ping ping (LCA+DFS序)
- 关于axis2使用wsdl2java.bat注意点
- 两种升序排序的方法
- CSS3实现文字3D效果
- Unity中Input 方法总结
- Python3 [爬虫实战] Redis+Flask 动态维护cookies池(上)
- LeetCode Problem 424: Longest-Repeating-Character-Replacement
- Java IO
- UVa 536 Tree Recovery
- BZOJ 4791: [CERC2016]Free Figurines 模拟
- 职场10大潜规则
- 如何解决跨域请求的问题
- ADB 过滤activity 关键字