input基础
Bevy Input 基础教程
本教程基于Bevy官方示例,按主题组织,提供易于理解的输入系统使用参考。
键盘输入
基础键盘输入
示例文件: keyboard_input.rs
最基本的键盘输入处理:
1 | use bevy::prelude::*; |
关键要点:
- 使用
Res<ButtonInput<KeyCode>>获取键盘输入状态 pressed()检查按键是否正在被按下just_pressed()检查按键是否刚刚被按下(只在按下瞬间触发一次)just_released()检查按键是否刚刚被释放
键盘事件监听
示例文件: keyboard_input_events.rs
监听所有键盘事件:
1 | use bevy::{input::keyboard::KeyboardInput, prelude::*}; |
关键要点:
- 使用
EventReader<KeyboardInput>监听键盘事件 - 事件包含按键状态、物理键、逻辑键等信息
- 适合需要详细键盘信息的场景
键盘修饰键
示例文件: keyboard_modifiers.rs
处理组合键和修饰键:
1 | use bevy::prelude::*; |
关键要点:
any_pressed()检查多个按键中是否有任意一个被按下- 支持左右修饰键的检测
- 适合实现快捷键和组合键功能
字符输入
示例文件: char_input_events.rs
处理字符输入(支持多语言):
1 | use bevy::{ |
关键要点:
- 使用
event.logical_key获取逻辑键值 Key::Character表示字符输入- 支持多语言字符输入
- 适合文本输入和聊天功能
鼠标输入
基础鼠标输入
示例文件: mouse_input.rs
处理鼠标按钮和移动:
1 | use bevy::{ |
关键要点:
ButtonInput<MouseButton>处理鼠标按钮AccumulatedMouseMotion处理鼠标移动AccumulatedMouseScroll处理滚轮滚动- 支持左键、右键、中键检测
鼠标事件监听
示例文件: mouse_input_events.rs
监听详细的鼠标事件:
1 | use bevy::{ |
关键要点:
- 多种事件类型提供不同粒度的鼠标信息
- 手势事件仅在macOS上可用
- 适合需要精确鼠标控制的场景
鼠标光标控制
示例文件: mouse_grab.rs
控制鼠标光标的显示和锁定:
1 | use bevy::{prelude::*, window::CursorGrabMode}; |
关键要点:
CursorGrabMode::Locked锁定鼠标到窗口中心CursorGrabMode::Confined限制鼠标在窗口内CursorGrabMode::None正常模式- 适合FPS游戏等需要鼠标控制的场景
触摸输入
基础触摸输入
示例文件: touch_input.rs
处理触摸屏输入:
1 | use bevy::{input::touch::*, prelude::*}; |
关键要点:
Touches资源提供触摸状态- 每个触摸有唯一ID
- 支持多点触摸
- 包含位置和压力信息
触摸事件监听
示例文件: touch_input_events.rs
监听详细的触摸事件:
1 | use bevy::{input::touch::*, prelude::*}; |
关键要点:
TouchInput事件提供详细的触摸信息TouchPhase表示触摸的不同阶段- 适合需要精确触摸控制的场景
游戏手柄输入
基础游戏手柄输入
示例文件: gamepad_input.rs
处理游戏手柄输入:
1 | use bevy::prelude::*; |
关键要点:
Gamepad组件提供手柄输入状态- 支持多个手柄同时连接
- 按钮有数字和模拟两种输入
- 摇杆提供X、Y轴模拟输入
游戏手柄事件监听
示例文件: gamepad_input_events.rs
监听游戏手柄连接和输入事件:
1 | use bevy::{ |
关键要点:
- 多种事件类型提供不同粒度的手柄信息
- 连接事件处理手柄插拔
- 轴和按钮事件提供精确的输入变化
- 有序事件确保事件处理的正确顺序
文本输入
基础文本输入
示例文件: text_input.rs
处理文本输入和IME(输入法编辑器):
1 | use std::mem; |
关键要点:
- IME支持多语言输入
- 处理预编辑和提交事件
- 支持特殊键如回车、退格
- 需要合适的字体支持多语言字符
总结
Bevy的输入系统提供了全面的输入处理能力:
- 键盘输入: 基础按键、组合键、字符输入
- 鼠标输入: 按钮、移动、滚轮、光标控制
- 触摸输入: 多点触摸、手势识别
- 游戏手柄: 按钮、摇杆、扳机、震动
- 文本输入: IME支持、多语言输入
这些输入系统可以组合使用,创建丰富的交互体验。建议根据项目需求选择合适的输入方式。