6个版本 (破坏性更新)
0.6.0 | 2024年7月6日 |
---|---|
0.5.0 | 2024年2月24日 |
0.4.0 | 2024年2月17日 |
0.3.0 | 2024年2月17日 |
0.1.0 | 2024年2月14日 |
#302 in 游戏开发
每月28次下载
140KB
2.5K SLoC
Bevy Ineffable
一个简单易用的Bevy游戏引擎输入管理器,赋予玩家更多能力,并使可访问性变得容易。
核心原则
- 使可访问性变得容易。
- 提供统一的抽象视图。
- 游戏应与特定输入设备无关。
- 不再需要从多个来源手动收集键盘、鼠标和游戏手柄输入。
- 绝不允许游戏崩溃,但应在出现问题时提供清晰直接的反馈。
- 扫描玩家创建的键绑定配置,并生成包含详细反馈的报告。
- 识别不同类型的输入(轴、双轴、连续和脉冲),并在编译时利用类型系统区分它们。
- 双轴:沿两个轴输入方向。例如,模拟摇杆。
- 单轴:沿一个轴输入方向。例如,鼠标滚轮。
- 连续:始终处于激活状态。例如,当按钮被按下时。
- 脉冲:偶尔脉冲。例如,点击鼠标左键。
快速入门
[dependencies]
# Add bevy_ineffable as a dependency to your `Cargo.toml`
bevy_ineffable = "0.6.0"
use bevy::prelude::*;
use bevy_ineffable::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
// Always add the IneffablePlugin:
.add_plugins(IneffablePlugin)
// Also register GooseInput as an InputAction:
.register_input_action::<GooseInput>()
.add_systems(Startup, init)
.add_systems(Update, update)
.run();
}
/// Define an enum and derive `InputAction`.
/// These are the abstract actions that keys can be bound to.
#[derive(InputAction)]
pub enum GooseInput {
/// In this example, the only thing the player can do is honk.
/// We must define what kind of input Honk is. Honking is
/// enacted instantaneously, so we'll define it as a pulse.
#[ineffable(pulse)]
Honk,
// You can add more actions here...
}
/// Create a config that binds the space bar to the `Honk` action.
fn init(mut ineffable: IneffableCommands) {
// The builder pattern is used here, but configs can also
// be loaded as an asset.
let config = InputConfig::builder()
.bind(
ineff!(GooseInput::Honk),
PulseBinding::just_pressed(KeyCode::Space),
)
.build();
ineffable.set_config(&config);
}
/// Whenever the Honk action pulses, write to the console.
fn update(ineffable: Res<Ineffable>) {
if ineffable.just_pulsed(ineff!(GooseInput::Honk)) {
println!("Honk!");
}
}
更多示例
更多示例可以在examples/
目录中找到。每个示例都在自己的文件中。通过运行第一个示例来尝试:
cargo run --example basics
兼容的Bevy版本
bevy | bevy_ineffable |
---|---|
0.12 | 0.1.0 - 0.3.0 |
0.13 | 0.4.0 - 0.5.0 |
0.14 | 0.6.0 |
路线图
- 宏支持
- 记录和回放输入序列
- 在游戏中实现键重映射设置屏幕的辅助函数。
- 完整的本地多人支持
- 支持屏幕按钮提示
- 不同的输入上下文
- 可能与其他GUI相关联?
许可协议
Ineffable可以在以下任一协议下双许可:
根据您的选择。这意味着当您在游戏中使用此软件包时,可以选择使用哪个许可证。
除非您明确声明,否则根据Apache-2.0许可证定义的,您有意提交的任何贡献,将按照上述方式双许可,没有任何附加条款或条件。
依赖项
~40–76MB
~1.5M SLoC