【问题标题】:How to handle input via Bluetooth in Google Cardboard?如何在 Google Cardboard 中通过蓝牙处理输入?
【发布时间】:2015-07-18 08:34:04
【问题描述】:

我正在使用 Google Cardboard SDK 和 Unity 3D 为 Google Cardboard 构建第一个 Unity 教程(滚动球)。 我需要移动主玩家球(教程中的白色球)来收集黄色的小方块。现在,Google Cardboard 只允许头部跟踪以及开箱即用的单个开关(磁性/导电泡沫)。为了移动球,我需要连接一个控制器。

这是我的计划-> 买一个操纵杆。 将其连接到 Arduino。 将蓝牙模块连接到 Arduino。

我需要知道如何在游戏中接收蓝牙数据。 代码应该在主播放器脚本的 void Update() 方法中吗?

任何帮助将不胜感激。谢谢你:)

【问题讨论】:

    标签: android unity3d bluetooth google-cardboard


    【解决方案1】:

    不明白为什么需要 Arduino。

    我做了一个纸板游戏(飞行模拟器类型)。 从速卖通买了一个 ipega 9028 游戏手柄。 将它与我的 android / iphone 绑定,仅此而已。 (除非您的手机没有蓝牙……在这种情况下,您应该购买新手机而不是新的 Arduino :))

    在您的 unity 应用程序中,您首先需要绑定键并将它们保存在 PlayerPrefs 中,因为您无法知道哪个按钮/轴转换为哪个统一按钮编号/轴编号。

    所以在统一的输入管理器中,您需要为操纵杆编号 1 定义所有可能的按钮和轴。然后统一,创建一个键绑定菜单。在那里,您应该让用户为每个选项单击一个绑定按钮(例如移动、射击、上升、下降等),一旦他单击它,您就需要有 2 个“for 循环”。一种在所有按钮编号上查找输入 (Input.GetButton),另一种在所有操纵杆轴上查找输入 (Input.GetAxis)。根据您在输入管理器中为它们创建的名称。

    一旦你检测到一个输入,你应该把它的名字连同它应该绑定到的动作一起存储在 playerPrefs 中。

    您应该让您的用户在安装游戏后执行此操作一次。因为每个游戏手柄向统一传输不同的代码。因此,例如对于左模拟摇杆,您无法提前知道它将统一对应哪个轴。

    然后在您的游戏中,只需在 Start() 上从 playerPrefs 读取所有这些值,您就会知道每个动作要听哪个输入。

    我希望这很清楚。

    附言还可以获得一个 USB 操纵杆,这样您就可以轻松地在您的开发机器上进行测试。

    【讨论】:

    • 不幸的是,我需要为这个项目制作自己的控制器:(我做了一些研究,我打算用 Arduino 制作 ESP8266 WiFi 模块。Unity 3D 可以通过 TcpClient 类处理输入。你认为这会奏效吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多