`
dengzhangtao
  • 浏览: 678970 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Unity3D Input按键系统

 
阅读更多

默认输入轴:

  • 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(); }
复制代码
0
0
分享到:
评论

相关推荐

    Unity3d_动态改变按键设置

    综上所述,动态改变按键设置在Unity3D中涉及多个方面,包括Input Manager的配置、C#脚本的编写、UI交互设计以及数据持久化。通过理解并实践这些知识点,开发者可以创建更加灵活和用户友好的游戏。

    WinForm嵌入Unity3D并实现交互

    在Unity3D中,我们可以利用`Input.GetKeyDown(KeyCode)`函数来检测键盘按键的按下事件。例如,如果要检测空格键是否被按下,可以在Update方法中编写如下代码: ```csharp void Update() { if (Input.GetKeyDown...

    unity3D素材----UI界面包.zip

    在Unity3D中,UI系统是基于Canvas组件的,它可以创建各种元素,如按钮、文本、图像、滑块等,这些元素可以动态地与游戏逻辑交互。Cartoon Game GUI可能包含了这些基本元素的预设版本,设计为适合卡通风格的游戏。 ...

    WinForm内嵌Unity3D并实现交互

    在本文中,我们将深入探讨如何在WinForm应用程序中内嵌Unity3D引擎,并实现两者之间的交互。这是一项技术性较强的任务,涉及到多个关键步骤和知识点,让我们逐一解析。 首先,我们要理解Unity3D是一个强大的跨平台...

    Unity3D圣典官方中文API文档.chm

    Unity3D的API则包含了从基本的数学结构到复杂的物理系统,再到图形渲染和脚本控制的所有内容。 1. **基本概念** - **GameObject**: 游戏中的基础实体,可以包含组件如Transform、Collider、Rigidbody等。 - **...

    Unity3D GUI焦点操作

    GUI焦点操作是Unity3D GUI系统中的一个重要组成部分,主要涉及到如何管理和切换用户界面元素之间的焦点,这对于提升用户体验至关重要。 #### 二、GUI焦点管理原理 在Unity3D的GUI系统中,焦点是指当前可接收键盘...

    unity3d 吃豆人

    Unity内置的Input Manager可以方便地设置按键映射。 6. **动画系统**:Unity的Animator Controller和Animation Clip可以为吃豆人和鬼魂创建丰富的动画效果,如吃豆子、被抓住、死亡等状态的切换。 7. **UI界面**:...

    unity3d投篮游戏(详细代码,图片都有)

    - Unity3D提供了Input系统来处理玩家输入,如触摸屏点击或键盘按键。在篮球游戏中,玩家的投篮动作可以通过点击屏幕触发。 4. **物理系统**: - Unity3D内置了强大的物理引擎,包括重力、摩擦力等。篮球的运动...

    Unity3D人物行走脚本示例2

    在Unity3D游戏开发中,角色的行走与交互是至关重要的。本文将详细解析一个基于Unity3D的人物行走脚本示例,该脚本适用于第一人称视角(First Person Controller)。我们将探讨如何实现角色的前后左右移动、跳跃、...

    Unity3D点击鼠标按键代码2

    在Unity3D游戏开发中,与用户交互是至关重要的,其中一种常见的交互方式就是通过鼠标按键来实现。本文将详细讲解如何在Unity3D中使用C#或JavaScript编写代码来检测并响应鼠标的点击事件。 首先,我们来看Unity3D...

    unity3d中鼠标检测代码.doc

    4. **UI交互**:Unity3D的UI系统支持Canvas组件,可以通过 `EventSystem.current.IsPointerOverGameObject()` 检测鼠标是否在UI元素上,以避免与游戏世界物体的冲突。 5. **多按键检测**:除了左键,还可以检测右键...

    unity3d中文API参考手册

    Unity3D是一款强大的跨平台游戏开发引擎,广泛应用于2D和3D游戏、虚拟现实(VR)、增强现实(AR)以及实时3D应用的创作。它的中文API参考手册是开发者学习和掌握Unity3D技术的重要资料。这篇文档将深入探讨手册中的关键...

    Unity3D版本游戏源码0020C#unity3D坦克大战小游戏源码

    Unity3D拥有强大的图形渲染引擎、物理引擎、动画系统等功能,支持C#作为主要的脚本语言,同时支持JavaScript、Boo等其他脚本语言。 #### 三、C#语言在Unity3D中的应用 C#是一种面向对象的、类型安全的编程语言,由...

    unity 3D期末大作业-坦克射击游戏

    5. **输入管理**:Unity提供Input Manager,用于处理键盘、鼠标或游戏手柄输入。在这个项目中,玩家通过键盘控制坦克移动,鼠标点击或按键触发射击。 6. **物理系统**:Unity内置了强大的物理引擎,用于模拟真实...

    Unity3d中文api

    Unity3D是一款强大的跨平台游戏开发引擎,广泛用于制作2D和3D游戏、互动体验以及虚拟现实应用。中文API文档是开发者在使用Unity时的重要参考资料,它详细介绍了Unity的各种功能和类库,帮助开发者更好地理解和运用这...

    InputManager:Unity的自定义InputManager

    介绍InputManager是Unity的自定义输入管理器,可让您在运行时重新绑定键并抽象输入设备以进行跨平台输入。产品特点实施起来非常简单。 它具有与Unity的Input类相同的公共方法和变量。 允许您在运行时自定义键绑定。 ...

    unity3d教程相机控制

    Unity3D提供了多种方式来切换不同的相机,最常见的就是使用`Input.GetKey`方法来检测用户输入,并根据输入结果启用或禁用特定的相机。 **2. 示例代码分析** ```csharp var camera0: Camera; var camera1: Camera; ...

    Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作

    首先,获取当前键盘按键可以使用Unity3D的`Input`类。在给出的代码示例中,`GetCurrentKey`脚本展示了如何实现这一功能。`Input.anyKeyDown`属性用于检查是否有任何按键被按下,`Event`类提供了对当前事件的访问,...

    Unity3d程序基础

    Unity3D程序基础知识点涵盖多个方面,包括基础编程语法、Unity3D引擎的类和函数定义、用户输入处理、向量运算以及场景空间坐标系统等。 首先,基础编程语法是编写Unity3D脚本的根基。在Unity3D中,if语句是常用的...

    Unity3D教程:如何使用脚本进行控制1

    Unity3D 是一款广泛应用于游戏开发的3D引擎,它提供了强大的图形渲染、物理模拟以及交互式编程功能。在这个“Unity3D教程:如何使用脚本进行控制”中,我们将探讨如何通过编写JavaScript脚本来控制游戏对象的行为,...

Global site tag (gtag.js) - Google Analytics