今天来谈谈关于Unity手柄的支持

一、首先我们先要搞清楚从哪开始进行控制:

二、接着来看看它里面的属性:

Name:【按键名】该键的名称,可以在脚本编程中直接引用他。比如:Input.GetButtonDown(“Jump”);

Descriptive Name:【描述名】在游戏的独立机构中的配置对话框中,当控制值为正时候所显示的名称。默认空白。

Negative Descriptive Name:【负描述】在游戏的独立机构中的配置对话框中,当控制值为负的时候所显示的名称。

Nagative Button:【负向按钮】玩家按下这个按钮来让被控制物体向负方向运动。

Positive Button:【正向按钮】玩家按下这个按钮让被控制物体向正方向运动。

Alt Negative Button: 玩家可以使用的备选负向按钮,比如方向键和WASD

Alt Positive Button:玩家可以使用的备选争相按钮。

Gravity:【重力】如果玩家停止输入,该轴将恢复到空挡或0速度,其单位为单位每秒。

Dead:【盲区】可以用在模拟控制。在模拟控制器上,在这个范围内的任何值都会映射到空档不会提供任何输入。

Sensitivity:【灵敏度】可以用于数字控制,他是该轴向给定得值移动的速度。正负都可,单位为单位每秒。

Snap:【对齐】如果选中,可以确保在同时按下正向和负向按钮时候该轴的值为空挡。

Invert:【反转】迅速交换正向和负向控制键。

Type:【类型】该键对应的输入设备类型。可以为Key,MouseButton,MouseMove,JoystickAxis,或Window Movement。

Axis:【轴】这个控制方式有该输入设备的哪条轴指挥。这可受不同游戏手柄影响。

JoyNum:【操作杆编号】多个操作杆在机器上市后,决定哪个哪个操作杆控制给定的轴。可以选择从所有的操作杆接受输入,或是为其制定一个特定的。

三、Input类的实现方式:

GetAxis();返回制定轴得值。

GetButton():如果制定的按钮按下,返回True。

GetKey():如果制定按键按下返回True。

GetMouseButton():制定鼠标按钮按下返回True。

ResetInputAxis():使用这个函数可以重置虽有输入,并把他们护肤到空挡或0.

anyKey:任意键按下返回True。比如:按任意键继续。

MousePisition:使用向量来保存鼠标在屏幕上当前位置。屏幕左下角映射为(0,0);

四、OK,了解了从哪控制后,那么现在开始我们就要实现怎么控制它!

这里我们以市面上常用的北通手柄为例,来进行探讨:

如图,是手柄上所有键位介绍,那么接下来我们就开始测试这些键位在Unity中都是对应的哪些值,不多说,直接上代码

using UnityEngine;
using System.Collections;
using System;/// <summary>
/// 测试游戏手柄键值
/// </summary>
public class PlayerJoystickClass : MonoBehaviour
{private string currentButton;//当前按下的按键// Use this for initialization void Start(){}// Update is called once per frame void Update(){var values = Enum.GetValues(typeof(KeyCode));//存储所有的按键for (int x = 0; x < values.Length; x++){if (Input.GetKeyDown((KeyCode)values.GetValue(x))){currentButton = values.GetValue(x).ToString();//遍历并获取当前按下的按键}}}// Show some data void OnGUI(){GUI.TextArea(new Rect(0, 0, 250, 40), "Current Button : " + currentButton);//使用GUI在屏幕上面实时打印当前按下的按键}
}

将测试出来的键值打印到面板上面
测试出来的结果如下:

LT/L2:JoystickButton8
RT/R2:JoystickButton9
LB/L1:JoystickButton6
RB/R2:JoystickButton7
A:JoystickButton0
B:JoystickButton1
X:JoystickButton3
Y:JoystickButton4
Back:JoystickButton10
Start:JoystickButton11
Menu:JoystickButton12
左轴按下:JoystickButton13
右轴按下:JoystickButton14

五、现在键值都出来了,那接下来的事情就简单多了,Unity获取对按键的处理无非就这几种:

1         if (Input.GetKey(KeyCode.A))
            {
                //获取到键后的操作
            }
  2       if (Input.GetKeyDown(KeyCode.A))
            {
                //获取到键并按下后的操作
            }
  3         if (Input.GetKeyUp(KeyCode.A))
            {
                //获取到键并抬起后的操作
            }

在此强烈建议使用第三种,因为本人亲测前两种或触发多次操作,很蛋疼

六、上面的只是介绍了按键的操作,但是这是手柄呀,他是有摇杆的,那么这些轴需要怎么操作呢,别急,接下来我们就开始收拾他

北通手柄上面的轴有四处(以上面的图片为例)

轴向比较特殊,需要自己进行添加设置(Unity中的轴向一般都是水平和垂直轴)

1、左轴

2、右轴

3、十字键轴

4、LT/L1/RT/R1所在的轴

现在知道这些轴向了,直接使用API方法

因为Input.GetAxis("")返回的是一个(-1,1)的范围值,所以我们根据这个值可以判定按键的方向

if (Input.GetAxis("自定义的轴向名字") > 0 && Input.GetAxis("自定义的轴向名字") < 1)
        {
            //此处是轴向为正向时的操作
        }
if (Input.GetAxis("自定义的轴向名字") < 0 && Input.GetAxis("自定义的轴向名字") > -1)
        {
            //此处是轴向为负向时的操作
        }

七、自我小结:

在适配手柄操作时,主要的注意点就是按键值和轴向的匹配,不同的手柄有时对应的键值也会不一样,所以各位看官,上述的只是一个参考,具体的还需要以你项目中使用的实际手柄为准,最好是能准备几套方案已做到更好的玩家体验!

Unity对于手柄的支持相关推荐

  1. 谈谈Unity对于手柄的支持

    今天来谈谈关于Unity手柄的支持 一.首先我们先要搞清楚从哪开始进行控制: 二.接着来看看它里面的属性: Name:[按键名]该键的名称,可以在脚本编程中直接引用他.比如:Input.GetButt ...

  2. unity vr手柄移动_移动内外VR跟踪,现在可通过Unity在手机上轻松使用

    unity vr手柄移动 VR is all about immersion, and the ability to track the user's position in space is a k ...

  3. Unity发布Web之支持手机端

    Unity发布Web之支持手机端 需求: ___ 相信有许多人和小黑一样,会遇到各种各样的难题,这其中就有,Unity发布Web后,在手机浏览器上可运行!!!!! 分析: 为什么会有相关的需求被提出呢 ...

  4. unity如何添加自定义HID设备,自己开发的手柄如何支持unity。

    最近在做毕业设计,涉及到HID设备接入unity. HID设备配置 当你想用单片机自己开发一个HID手柄时,网上可以找到比较多的教程,这里有一个大佬出的stm32的教程 使用 cubeMX软件配置游戏 ...

  5. Unity3D 对普通手柄的支持

    Unity3D 对普通手柄 (非 x360手柄) 的支持 using UnityEngine; using System.Collections; public class JoystickContr ...

  6. Unity百度地图,支持PC,Android,iOS,支持添加模型,支持卫星图,街道图

    目前国内支持Unity的地图只有腾讯地图,但是腾讯地图只有两个月的试用时间,而且相对百度地图,腾讯地图确实有点拉跨,无奈只能自己写地图了 地图纯C#编写无需其他SDK,地图原理基于墨卡托坐标,每个经纬 ...

  7. PS5运行Linux,索尼发布新驱动 PS5手柄现已支持Linux系统用户

    据外媒Phoronix,索尼近日发布了一个新的"hid-playstation"驱动,为Linux操作系统用户提供了PS5手柄DualSense以及其他PlayStation硬件的 ...

  8. PS5运行Linux,索尼发布新的驱动系统 PS5手柄可支持Linux系统玩家是使用

    从外媒Phoronix得到的的最新消息,索尼发布了一个新的驱动系统,这个驱动系统帮助Linux系统玩家可以正常使用PS5手柄 Linux用户现在可以在USB/蓝牙模式使用DualSense手柄,该驱动 ...

  9. 今天把之前开发的捕鱼游戏加上摇杆手柄的支持,在家拿摇杆玩捕鱼,一样开心!

    今天闲着无事,把李逵劈鱼增加了游戏手柄的支持. 现在拿着手柄,一样可以玩啦! 不需要安装额外软件,即买即用! PS:按键对应关系: [color=#3366FF]摇杆                捕 ...

最新文章

  1. 阿里无人车配送快递突破 100 万单,小蛮驴牵引的自动驾驶战略布局
  2. Skype for Business Server 2015-10-ADFS-2-配置
  3. 日期控件的点击事件,在js中添加callback属性,不在html中直接添加
  4. 转载 MySQL 性能优化的最佳20多条经验分享 http://www.jb51.net/article/24392.htm
  5. django——url(路由)配置
  6. 从0开始写一个基于Flutter的开源中国客户端(7)——App网络请求和数据存储
  7. 接口压测之Locust
  8. C++ Primer 5th Answers
  9. cmyk rgb 数值转换_计算机视觉学习笔记2 图像类型转换
  10. 闲鱼日出2000单,不对称信息差的好项目
  11. 路由器Telnet及ACL配置
  12. 健康心理学类毕业论文文献包含哪些?
  13. python敏感词过滤代码简单代码_Python 实现王者荣耀中的敏感词过滤示例
  14. 公司网页服务器访问超时,网站页面请求后台超时的相关咨询
  15. Packet Tracer - 配置 EtherChannel
  16. 区块链链上数据全公开,你却不知道怎么查?找Gikee啊
  17. 计算机研究生论文写作技巧
  18. SpringBoot整合websocket实现及时通信聊天
  19. HDU 1205 吃糖果
  20. 剑指offer笔记(七) 第47题至第53题

热门文章

  1. 消费者与电商变革传统企业
  2. 京东金融的贷款规模创新高
  3. 计算机表格按性别排列,excel表格数据男女分类-Excel 按性别(男女)排序
  4. 阿博茨科技:不仅是工具,基于用户体验的CRM再选择
  5. maven打包将依赖jar也打包的方法
  6. 微信小程序电影详情功能实现
  7. 网络系统设计过程中,物理网络设计阶段的任务是(70)。【答案】A
  8. L1-5 试试手气(c++、数组)
  9. [luogu1710]地铁涨价(bfs)
  10. 蚂蚁集团开源大规模视频侵权定位数据集