在 visionOS 中探索游戏输入
原文
大家好,我是来自技术传播团队的 Charlyn。今天,我要谈谈 Vision OS 中出色的游戏输入的要素。当涉及到可以在 Vision OS 上制作的游戏类型以及可用于开发这些游戏的框架时,您有很大的灵活性。在 Apple Vision Pro 上,人们用眼睛和双手来导航系统上的应用程序和游戏,还支持外部物理输入设备。围绕手势设计的游戏输入是让玩家无需任何额外设备即可直接进入游戏的最简单方法。我将引导您了解可供选择的不同类型的手势。
物理输入设备支持
我将描述 Vision OS 支持的一些物理输入设备,以及如果您决定添加对它们的支持时应该记住的一些事项。围绕 Vision OS 手势设计的输入可以是直接的,也可以是间接的。直接输入意味着您直接伸出并处理虚拟对象。请记住,借助 Vision OS 的无限画布,玩家可能需要大幅度的手臂动作才能到达游戏中的所有物体。间接输入意味着您可以通过查看并点击选择它们来远距离操作这些对象,这样您的手就可以更靠近身体。间接输入让玩家可以进行小的手部动作,然后放大为大动作。因此,如果他们在观看区域中伸得很远或进行大量重复动作,间接输入可以使较长的游戏过程变得更加舒适。
间接输入示例
例如,在 Vision OS 上的一款益智游戏 Luna 中,您可以通过间接输入从远处握住每件作品。只需通过查看来选择一块,然后用手指移动该块即可。您可以将它直接放入拼图中,或者双击手指将其卡入到位。您可以使用手势来旋转拼图或移动它,以便您可以看到每个角度。这样,您就可以舒适地站着或坐着玩。当您玩游戏时,间接输入可以带来出色的坐下来体验。
直接输入示例
有时直接输入是有意义的,尤其是当您的游戏充满活力时。与虚拟对象的直接交互会很有趣。例如,在超级水果忍者游戏中,您可以使用菜单按钮来切片飞行的水果。该游戏是围绕直接输入而设计的。如果这种类型的输入适合您的游戏,确保包含大量反馈,以便玩家每次与物体的接触都感到满意。您可以结合使用视觉反馈,比如手背后的闪电和飞舞的果肉。您还可以添加声音效果,比如挤压和溅水。即使没有触觉,玩家也能知道他们什么时候接触过无论是 UI 按钮还是会飞的菠萝。最好在游戏中支持直接和间接手势,并且有几种不同的方法可以实现它们。
系统手势
您的游戏可以响应内置系统手势,或者您可以将两个或多个系统手势组合在一起,这使您可以更精细地控制游戏响应的输入。如果需要,您可以使用 ARKit 中的手部跟踪来创建您自己的自定义手势。使用内置系统手势有一些真正的优势。玩家已经清楚如何使用系统手势,因为他们已经在使用它们来导航平台上的所有其他应用程序和游戏。您不需要教他们如何与您的游戏互动,也不需要额外的设备。您的游戏开箱即用,玩家可以随时拿起并玩。
手势示例
有多种系统手势可供使用。最简单的方法是看着一个物体,然后用一只手的两个手指敲击。如果您的游戏使用 2D 屏幕上的单击进行输入,只需替换 Vision OS 中的点击手势即可。您还可以对双击做出响应。有捏合手势和捏合拖动手势,这两者都直接或间接地作用于对象。使用两只手,玩家可以放大和缩小或旋转物体。Vision OS 游戏 What the Golf? 是使用系统手势间接控制游戏中对象的一个很好的例子。我看着球并使用捏合手势来激活它。我现在可以移动我的手来控制球的方向以及释放它时它所具有的力。因为我的手已经接管了输入,我可以自由地环顾关卡,看看我的目标在哪里。一旦我松开手,球就会飞起来,我就一杆进洞了。
响应系统手势非常简单。您在现实视图中包含的任何想要可点击的实体都需要具有输入目标组件和碰撞组件。然后,您可以将手势附加到包含您的实体的任何现实视图,然后指示该视图中的任何实体都是可点击的。一旦检测到手势,您可以在手势处理程序中对其做出响应。要了解有关响应系统手势的更多信息,观看去年的视频,“开发您的第一个沉浸式应用程序”并查看 developer.apple.com 上有关交互性的文档。如果您的游戏是在 Unity 中开发的,您将使用 Unity 输入系统来检测和响应手势。要接收点击事件,请将输入碰撞器添加到您的游戏对象。点击数据作为 World Touch 事件提供给您。查看“创建沉浸式 Unity 应用程序”了解更多详细信息。
自定义手势
如果您需要更大的灵活性,您可以将系统手势组合在一起以创造出独特的东西。您可以将两个或多个系统手势配对,并检测它们何时同时发生或一个接一个地依次发生。您还可以将手势与键盘修饰符结合起来,并且您可以使用空间事件手势来低级访问手势事件,例如点击开始、移动或结束。如果您的玩家使用两只手同时处理两个不同的物体,这非常有用。使用空间事件手势来跟踪每个动作的各个目标。
在此示例中,您可以选择卫星,移动它,调整它的大小,并同时旋转它。系统会识别每个发生的手势,即使之前的手势尚未结束。当有人使用拖动手势移动对象时,添加“同时”表示您的应用程序应该监听放大和旋转手势(如果它们也发生)。这意味着多个手势之间的转换将是无缝的。要了解有关组合手势的更多信息,请观看去年的视频,“将 SwiftUI 带到下一个维度”和文档。
因为对玩家来说很熟悉,系统和组合手势应该是 Vision OS 上游戏输入的首选。但是如果您确实需要完善您的输入库,您可以定义自己的自定义手势。您为游戏创建的任何自定义手势都必须易于玩家学习和记住。确保手势非常适合游戏中的动作,这样它们就会很直观。当您设计自定义手势时,通过添加适量的视觉效果和声音反馈,确保玩家知道他们做得正确。要定义您自己的手势,您可以通过 ARKit 进行全手骨骼跟踪。您可以在同一游戏中将系统与自定义手势结合起来。
游戏设计示例
这是 Blackbox,这是以创造性方式将它们混合在一起的一个很好的例子。在他们入职期间,Blackbox 教玩家做出这种自定义手势,在环境中创建一个新的气泡。手势简单直观,这意味着它很容易学习和记忆。这很重要,因为这是您进入和退出游戏关卡的主要方式。但不要过度使用自定义手势。谨慎使用它们。Blackbox 在合适的时候使用系统手势。例如,我可以看着气泡并用手指敲击它们以将其弹出。Blackbox 位于 Vision OS 的完整空间中,这一点很重要。如果您的游戏与其他 Vision OS 应用程序同时位于共享空间中,那么您将无法使用 ARKit 和手势追踪。
自定义手势开发
现在,在整个空间中,您的游戏是唯一出现的应用程序,无论是混合空间、渐进空间还是完整空间。您的玩家可能会像在 Blackbox 中一样看到周围的环境,或者您的游戏可能会用新环境替换周围环境。为了创建自定义手势,ARKit 和全手骨骼跟踪存在于整个空间中。以下是创建圆形自定义手势的方法。检查手部跟踪所需的所有关节并获取它们在世界坐标中的位置。然后,对于这个圆形的手势,检查两个食指和两个拇指指尖之间的距离。如果小于四厘米,该手势已被识别,您的游戏可以对其做出响应。如果您在 Unity 中开发游戏,您可以使用 Unity 的手部跟踪包来访问有关玩家关节的信息。观看这些视频,了解有关将 Unity 游戏引入 Vision OS 的更多信息。
无论你使用什么类型的手势,间接还是直接,系统手势或自定义,您需要确保为具有不同能力的玩家构建替代方案。例如,Synth Riders 的输入设计围绕使用双手和手臂来接触物体。但是想象一下一名只能用一只手臂打球的球员。在这场比赛中,舒适度和辅助功能设置中有一个选项,您可以选择以单手模式玩游戏,并选择是用右手还是用左手。现在我只能用右手玩游戏了。考虑这些类型的辅助功能用例并为玩家构建一些输入回退非常重要。如果您使用的是 Reality Kit,您可以访问本机辅助功能框架。观看视频“创建无障碍空间体验”,了解有关针对不同能力进行设计的更多信息。如果您是 Unity 开发人员,有一个 Apple Accessibility 插件可以让您访问所有辅助功能。查看“插件和播放”了解更多详细信息。
物理输入设备支持
凭借系统和自定义手势的灵活性,在为游戏设计输入时,您已经有很多选择。但在某些情况下,您可能想要添加对 Vision OS 中可用的物理输入设备之一的支持。Vision OS 支持 iOS 和 macOS 支持的所有相同游戏控制器,包括 Xbox Series X 和 Sony PlayStation DualSense 控制器。如果您一次需要两个以上的输入,那么支持游戏控制器可能是正确的选择。或者您可能从另一个平台引入游戏,并且您已经基于控制器进行了输入。Vision OS 还支持蓝牙键盘和触控板,以防输入方式适合您的游戏。
响应来自物理控制器、键盘、以及通过蓝牙连接到 Vision OS 的触控板。所有相同的设备都可以在 iOS、iPadOS、macOS 和 Vision OS 上运行。所有这些平台都是相同的游戏控制器框架。因此,如果您要在多种类型的设备上运行游戏,相同的代码适用于所有这些。物理控制器适用于 Vision OS 中的各种体验,从窗口游戏到完全沉浸式的空间。街机游戏 Wildflowers 拥有出色的控制器支持。如果您有与 Vision Pro 配对并连接的游戏控制器,游戏输入会自动与该控制器配合使用。这确实很重要。检测控制器已连接并将您的输入切换为与该控制器配合使用比让玩家在游戏设置菜单中搜索开关要好得多。Wildflowers 做得很好的另一件事是确保您可以使用控制器完成游戏中的所有操作。期望玩家使用系统手势来访问部分用户界面会很不方便并且相当混乱。设计你的输入,以便游戏中的所有内容,甚至用户界面,可以通过游戏控制器访问。很容易检测玩家是否连接了游戏控制器。只需为 GCControllerDidConnect 设置一个观察者,这将提醒您连接到系统的任何游戏控制器。一定要监听 GCControllerDidDisconnect 事件,这样您就可以依靠其他形式的输入,比如系统手势,如果没有游戏控制器。
控制器输入示例
一旦您收到游戏控制器已连接的警报,您可以查看控制器上特定按钮的状态。或者如果你愿意的话您可以设置更改处理程序,以便在输入状态更新时收到通知。键盘和触控板的输入具有相同的流程。监听它们的连接,然后拉它们进行输入,或设置变更处理程序。这是用于检测和响应游戏控制器的代码。设置您的观察者并等待游戏控制器已连接的通知。如果在游戏启动之前控制器已连接,对于连接到 Vision OS 的每台设备,您仍会在此处收到通知。收到通知后,您可以设置输入更改处理程序,或者拉动设备以获得您期望的输入。还有 Vision OS 2 独有的最后一步。将 GameControllerInteraction 修改器添加到包含游戏对象的现实视图中。这表示指向您的现实视图的游戏控制器输入将由您的游戏处理。向玩家提供行动反馈也很重要,就像手势一样。使用 CoreHaptics 框架触发控制器中的隆隆声以匹配屏幕上的操作。别忘了添加音效,并在玩家的行动成功时立即给他们视觉反馈。
资源推荐
如果您是 GameController 框架的新手,有一些很棒的资源可以帮助您入门。如果您的游戏依赖于 Unity 引擎,您可以使用 Unity 的 GameController 插件来添加对游戏控制器输入的支持。观看这些视频了解更多详情。以下是哪些空间支持不同类型输入的快速浏览。大多数类型的输入,包括系统手势,传统游戏控制器和键盘,所有类型的空间都支持,从共享空间中的窗口或卷,到完整的空间体验。如果您想响应自定义手势的输入,您需要为整个空间设计游戏。简单回顾一下,您的游戏中有很多选项可以设计适合玩家的输入。Vision OS 内置的系统手势操作简单、自然,方便玩家使用。如果您需要更大的灵活性,您可以考虑以一两个自定义手势进行洒水。对于某些类型的游戏,支持物理控制器,可以扩展您的输入选项。最后一件事,如果您在 iOS 或 iPadOS 上已有游戏,详细了解如何将其转变为在 Vision OS 中感觉更加身临其境,将您的 iOS 或 iPadOS 游戏带到 Vision OS。感谢您的观看!
核心设计要点和注意事项
1. 手势输入设计
直接输入:
- 玩家直接伸手与虚拟对象交互。
- 适合动态和互动性强的游戏。
- 需要大幅度的手臂动作,适用于短时间游戏。
- 增加视觉和声音反馈,确保玩家每次与物体的接触都有明确反馈。
间接输入:
- 玩家通过查看并点击来远距离操作对象。
- 适合长时间游戏,减少手部疲劳。
- 使用小的手部动作放大为大动作,使长时间游戏过程更加舒适。
系统手势:
- 看着一个物体然后用两个手指敲击。
- 捏合手势和捏合拖动手势,放大和缩小或旋转物体。
- 结合多种系统手势,以实现更复杂的交互。
自定义手势:
- 使用 ARKit 进行全手骨骼跟踪。
- 设计简单直观,容易学习和记忆。
- 添加视觉和声音反馈,确保玩家知道手势成功。
- 在游戏中谨慎使用,避免过度复杂。
2. 物理输入设备支持
游戏控制器:
- 支持 iOS 和 macOS 支持的所有相同游戏控制器,包括 Xbox 和 PlayStation 控制器。
- 自动检测控制器已连接,并切换输入方式。
- 确保游戏的所有操作都可以通过控制器完成,包括用户界面。
蓝牙键盘和触控板:
- 支持蓝牙连接的键盘和触控板输入。
- 使用与 iOS、iPadOS 和 macOS 相同的游戏控制器框架,确保跨平台一致性。
3. 设计考量
玩家舒适度:
- 考虑长时间游戏的舒适度,间接输入适用于减少疲劳。
- 提供多种输入方式,让玩家可以根据需要进行选择。
辅助功能:
- 针对不同能力的玩家设计替代方案,如单手模式。
- 使用 Reality Kit 的辅助功能框架或 Unity 的 Apple Accessibility 插件,确保游戏对所有玩家都友好。
反馈机制:
- 添加视觉、声音和触觉反馈,增强玩家的互动体验。
- 使用 CoreHaptics 框架触发控制器中的震动,匹配屏幕上的操作。
多设备支持:
- 确保游戏在多个平台上运行,使用相同的输入代码。
- 检测设备连接状态,自动调整输入方式。
4. 开发资源
系统手势响应:
- 使用 Unity 输入系统或 Reality Kit 来检测和响应手势。
- 观看相关视频教程,了解更多详细信息。
自定义手势开发:
- 使用 ARKit 进行手部骨骼跟踪,创建独特的自定义手势。
- 结合系统和自定义手势,增强游戏交互。
物理控制器输入:
- 使用 Unity 的 GameController 插件添加对控制器输入的支持。
- 监听 GCControllerDidConnect 和 GCControllerDidDisconnect 事件,确保输入切换顺畅。
通过以上设计要点和注意事项,您可以在 Vision OS 上创建出色的游戏输入体验,为玩家提供自然、直观且舒适的游戏互动。
信息来源
内容由MiX Copilot基于大语言模型生成,有可能存在错误的风险。