3 个不稳定版本
0.2.1 | 2020年7月31日 |
---|---|
0.2.0 | 2020年7月28日 |
0.1.0 | 2020年7月27日 |
#5 in #gilrs
21KB
407 行
bami
基础 amethyst 输入库。为使用 amethyst crate 提供简单的输入实用工具。
可以通过 gilrs 功能添加控制器支持
[dependencies.bami]
version = "0.2.0"
features = ["gilrs"]
此 crate 正在开发中,一些控制器绑定可能尚未支持。
设置
use bami::BamiBundle;
let game_data = GameDataBuilder::default()
...
.with_bundle(BamiBundle::<StringBindings>::default())?
// ^------ Add this bundle AFTER the `InputBundle`
// Feel free to replace `StringBindings` with a custom type
...
用法
在您的代码中,您可以自由地将 StringBindings
替换为自定义类型!
use bami::{Input};
// Inside a system
type SystemData = Read<'s, Input<StringBindings>>;
fn run(&mut self, input: Self::SystemData) {
let action = String::from("jump");
// Only true the first frame of a same press
let pressed_this_frame =
input.actions.single_press(&action).is_down;
// `true` every frame the action is held
// Represents the raw input state.
let being_held_down: bool =
input.actions.status(&action).is_down;
let axis = String::from("horizontal");
// Axis value between [-1.0, 1.0].
let walk_speed: f32 =
input.axes.status(&axis).axis;
// Axes can also be used for menus with `single_press`.
// Every frame where the axis is not at 0.0 is considered
// a press. On the frames where `single_press` would
// return `is_down=false`, the axis value will also be 0.0
let menu_axis =
input.axes.single_press(&axis).axis;
if menu_axis > 0.0 {
// Pressed right
} else if menu_axis < 0.0 {
// Pressed left
}
}
运行测试
cargo test --features amethyst/empty
依赖项
~16–28MB
~401K SLoC