A Bevy plugin for 3D mouse picking, making it easy to interact
with geometry in Bevy using a mouse or touch. This plugin is built with bevy_mod_raycast
.
- Mouse intersection coordinates in world space
- Mouseover and mouseclick events
- Configurable highlighting
- Selection state management
- 3D debug cursor
- Touch support
- Common keybindings (Ctrl+A, Ctrl+Click multi-select)
It only takes a few lines to get mouse picking working in your Bevy application using this plugin.
- Add the crate to your dependencies in
Cargo.toml
:
bevy_mod_picking = "0.6"
- Import the plugin:
use bevy_mod_picking::*;
- Add the plugin to your app:
.add_plugins(DefaultPickingPlugins);
- Mark your camera as the picking source with the
PickingCameraBundle
component:
.insert_bundle(PickingCameraBundle::default());
- Add the
PickableBundle
component to any meshes you want to make pickable:
.insert_bundle(PickableBundle::default())
That's all there is to it! Read the docs and look at the provided examples to learn more.
To run a minimal demo of picking features, clone this repository and run:
cargo run --example minimal
I intend to track the main
branch of Bevy. PRs supporting this are welcome!
bevy | bevy_mod_picking |
---|---|
0.7 | 0.6 |
0.6 | 0.5 |
0.5 | 0.4 |
0.4 | 0.3 |
0.3 | 0.2 |
This project is licensed under the MIT license.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in bevy_mod_picking by you, shall be licensed as MIT, without any additional terms or conditions.