默认输入轴:
- Horizontal 和 Vertical被映射到w, a, s, d键和方向键
- Fire1, Fire2, Fire3被分别映射到Ctrl,Option(Alt)和Command键
- Mouse X 和 Mouse Y被映射到鼠标移动增量
- Window Shake X 和 Window Shake Y 被映射到窗口的移动
添加新的输入轴
添加新的虚拟轴,选择菜单Edit->Project Settings->Input :
-
名称(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)连接操纵杆将控制这个轴
移动设备输入
Unity 为你提供访问iOS/Android系统的Input 和 iOS Input脚本接口。
多点触控
触控列表(Input.touches):返回上一帧所有触控状态的对象列表(Touch[]:单个触摸状态)。
触控状态(TouchPhase):(例子:if(touch.phase != TouchPhase.Began))
- Began:手指已触摸屏幕。
- Moved:手指在屏幕上移动。
- Stationary:手指触摸屏幕,但并没有移动。
- Ended:手指从屏幕上移开。这是一个触摸的最后状态。
- Canceled:系统取消跟踪触摸,如用户把屏幕放到他脸上或超过五个接触同时发生。这是一个触摸的最后状态。
设备面朝方向
Input.deviceOrientation : (例子:if (Input.deviceOrientation == DeviceOrientation.FaceDown))
- Unknown:设备的方向不能被确定。
- Portrait:设备在纵向模式,设备直立并home按钮在底部。
- PortraitUpsideDown:设备在纵向模式,但颠倒一下,设备直立并home按钮在顶部。
- LandscapeLeft:设备在横向模式,设备直立并home按钮在右边。
- LandscapeRight:设备在横向模式,设备直立并home按钮在左边。
- FaceUp:设备保持与地面平行,屏幕的面向上。
- FaceDown:设备保持与地面平行,屏幕的面向下。
加速传感器
Input.acceleration :竖直拿着设备(home按钮在底部),X轴指向右,Y轴指向上,Z轴指向前。
加速度传感器数值可能被颠簸影响。应用低通过过滤器可以是它平滑,摆脱干扰。
//加速器刷新间隔 float AccelerometerUpdateInterval = 1.0f / 60.0f; //值越大, 被过滤值将汇集当前输入采样越慢 float LowPassKernelWidthInSeconds = 1.0f;
//过滤范围
private float LowPassFilterFactor = AccelerometerUpdateInterval / LowPassKernelWidthInSeconds; private Vector3 lowPassValue = Vector3.zero; void Start () { lowPassValue = Input.acceleration; } //过滤方法 (获取加速量调用此方法即可) Vector3 LowPassFilterAccelerometer(){ lowPassValue = Mathf.Lerp(lowPassValue, Input.acceleration, LowPassFilterFactor); return lowPassValue;
}
GPS地理位置定位
通过iPhoneSettings.StartLocationServiceUpdates()方法开始定位服务的更新。最后通过iPhoneInput.lastLocation可以收回位置坐标变量。
API: static void StartLocationServiceUpdates ( float desiredAccuracyInMeters = 10f,float updateDistanceInMeters = 10f)
参数1:desiredAccuracyInMeters - 理想服务精确度(单位是米)。使用更高的值像500通常不需要打开GPS芯片从而保持电池电量,像5-10的值可以被用来得到最好的精确度。默认值是10米。
参数2:updateDistanceInMeters - 最小的距离(单位是米)的一种服务在横向移动之前必须更新iPhoneInput.lastLocation属性。像500意味着更少的开销。默认的是10米。
void Start () { // 开始服务在查询定位之前 iPhoneSettings.StartLocationServiceUpdates(); // 等待知道服务初始化
//iPhoneSettings.locationServiceStatus为当前服务状态 int maxWait = 20; while (iPhoneSettings.locationServiceStatus == LocationServiceStatus.Initializing && maxWait > 0) { yield return WaitForSeconds(1); maxWait--; } // 在20秒内服务没有初始化 if (maxWait < 1) { print("Timed out"); return; } // 用户拒绝访问定位服务 if (iPhoneSettings.locationServiceStatus == LocationServiceStatus.Failed) { print("User denied access to device location"); return; } // 被给予许可并且定位数值可以取回 else { print("Location: " + iPhoneInput.lastLocation.latitude + " " + iPhoneInput.lastLocation.longitude + " " + iPhoneInput.lastLocation .altitude+ " " + iPhoneInput.lastLocation.horizontalAccuracy + " " + iPhoneInput.lastLocation.timestamp); } // 如果不需要持续查询刷新定位停止服务 iPhoneSettings.StopLocationServiceUpdates(); }
相关推荐
1、Unity模拟组合键输入组件 //模拟按键A: keybd_event(Keys.A, 0, 0, 0); //模拟组合键CTRL + A: //public const int KEYEVENTF_KEYUP = 2; //keybd_event(Keys.ControlKey, 0, 0, 0); //keybd_event(Keys.A...
unity插件inputtouch 多平台 c# JavaScript 文件大小588k
介绍InputManager是Unity的自定义输入管理器,可让您在运行时重新绑定键并抽象输入设备以进行跨平台输入。产品特点实施起来非常简单。 它具有与Unity的Input类相同的公共方法和变量。 允许您在运行时自定义键绑定。 ...
Input.GetTouch在移动端实现多点触控的代码,及利用Unity Remote5进行测试
导入资源后记得导入InputSystem包,实测2020.3.23f1c1,2019.4.28f1c1可用,2021版本会有bug
//当controller处在空中间,grounded为false,即跳动和行走都无效///鼠标控制视角///// if (Input.GetMouseButt
Unity3D 画面扭曲切换效果脚本 DreamWipe.js 1. var camera1 : Camera; 2.var camera2 : Camera; 3.var fadeTime = 4.0; 4.var waveScale = .07; // Higher numbers make the effect more exaggerated. Can be ...
使用Unity自带的一些插件 实现Tab键自动切换输入框,住左(或者右)shift,在按下tab键,光标进行向上跳转!
linux按键驱动(input子系统)
Unity Learn - Using the Input System in Unity - 有关如何在 Unity 中使用输入系统的视频教程。 Warriors Demo Project - 一个演示项目,展示了输入系统中的各种工具和功能,包括使用不同输入法的本地多人游戏。 ...
Valve多年来一直不支持Unity3D的通用/不可知XR输入系统或提供逻辑解决方案。 而且,在设置新项目或增加对更多平台的支持时,OpenVR API +未来的OpenXR解决方案中过度设计的不可知解决方案似乎比我们许多人所需的工作...
input子系统各个层的分析,input子系统研究,1-input系统的应用编程,2-input系统的按键驱动编写
本文实例为大家分享了unity3D实现物体任意角度自旋转的具体代码,供大家参考,具体内容如下 主要涉及函数: Input.GetAxis(“Mouse x”) 可取得鼠标横向(x轴)移动增量 Input.GetAxis(“Mouse y”) 可取得鼠标竖...
Input delegates are useful for when you want to know about every little bit of pointer input that is sent to your control. This allows you not only to respond to each kind of input immediately, but ...
获 取遥感(或iphone感应)垂直轴力度(是一个0-1之间的float):Input.GetAxis("Vertical“) 推荐写法,键盘的话默认按w或者u
Unity InputManager配置OculusTouch与HTCVive虚拟按键配置文件,下载后直接替换ProjectSettings路径下的同名文件即可
Android之Input子系统事件分发流程 - CSDN博客原创2013年11月29日 08:49:08Android之Input子系统事件分发流程Andro
Fingers是Unity中手势处理的最佳选择。手指手势是功能集中的顶部,结合低价格和易于使用的架构和教程视频。...具体介绍可见AssetStore:https://www.assetstore.unity3d.com/cn/?stay#!/content/41076
Input子系统分析
获取当前键盘按键,代码如下: using UnityEngine; using System.Collections; public class GetCurrentKey : MonoBehaviour { KeyCode currentKey; void Start () { currentKey = KeyCode.Space; } void ...