输入处理
这是一个完整的 Bevy 输入处理例子,你可以运行。它将把所有的输入内容打印到控制台。
Bevy 支持以下输入:
传感器,如加速计和陀螺仪,还不支持。
对于大多数输入类型,Bevy 提供了两种处理方式:
有些输入只能以事件的形式提供。
检查设备状态是通过 resources 来完成的,比如 Input
(用于数字输入,如按键或按钮)、Axis
(用于模拟输入)、Touches
(用于触摸屏上的手指操作)等等。这种处理输入的方式对于实现游戏逻辑非常方便。在这些情况下,你通常只关心游戏中映射到动作的特定输入,你可以检查特定的按钮、按键,看它们何时被按下、释放,或者它们的当前状态是什么。
Events(输入事件)是一种较底层的、更全面的方法。如果你想从某类输入设备中获得所有的操作,而不是只检查特定的输入,就使用输入事件。
输入映射
Bevy 还没有提供一个内置的方法来做输入映射(配置按键绑定,等等)。你需要想出自己的方法,将输入转化为游戏或应用中的逻辑动作。
有一些社区制作的插件可以帮助你:见 bevy-assets 的输入部分。我个人推荐:Leafwing Studios 的输入管理器插件。
一个好的想法是为你自己的游戏设计特定的映射抽象。例如,如果你需要处理角色的移动,你可能希望有一个系统来读取输入并将其转换为你自己的内部"移动事件、行为事件",然后另一个系统作用于这些内部事件来实际移动角色。确保使用 明确的 system 排序 以避免滞后、帧延迟。