一键导入
bevy-picking
Reference for Bevy's picking system — pointer events, backends, hover/click/drag observers, sprite picking, UI picking, and mesh picking.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Reference for Bevy's picking system — pointer events, backends, hover/click/drag observers, sprite picking, UI picking, and mesh picking.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Reference for Avian physics engine — rigid bodies, colliders, joints, spatial queries, collision events, character controllers, and debug rendering.
Reference for loading, managing, and tracking assets in Bevy — AssetServer, handles, loading states, events, custom loaders, and hot reloading.
Reference for playing and controlling audio in Bevy — AudioPlayer, AudioSink, spatial audio, volume, and playback settings.
Reference for Bevy Scene Notation (BSN) — the bsn! macro for defining inline scenes with components, children, relationships, observers, and dynamic props.
Reference for cameras in Bevy — Camera2d, Camera3d, viewports, projection, render layers, mouse-to-world, and free camera controllers.
Reference for Bevy Commands — spawning/despawning entities, inserting/removing components, custom commands, trait extensions, and testing.
| name | bevy-picking |
| description | Reference for Bevy's picking system — pointer events, backends, hover/click/drag observers, sprite picking, UI picking, and mesh picking. |
| metadata | {"crate":"bevy_picking","bevy":"0.19"} |
Pointer is an abstract representation of user input at a screen location. Backends read PointerLocation components and produce PointerHits events. The picking pipeline handles the rest.
DefaultPickingPlugins (included with DefaultPlugins when bevy_picking feature enabled) contains:
InteractionPlugin — generates pointer events, handles bubblingPickingPlugin — manages picking state, produces higher-level eventsPointerInputPlugin — mouse and touch eventsPointer<Over> — pointer entered entity boundsPointer<Move> — pointer moving over entityPointer<Out> — pointer left entity boundsPointer<Press> / Pointer<Release> — button pressed/releasedPointer<Click> — press + release on same entityPointer<DragStart> / Pointer<Drag> / Pointer<DragEnd>Pointer<DragEnter> / Pointer<DragOver> / Pointer<DragDrop> / Pointer<DragLeave>Enable with Pickable component:
commands.spawn((
Sprite::from_color(GREEN, Vec2::new(100., 100.)),
Pickable::default(),
)).observe(|hover: On<Pointer<Over>>, mut sprites: Query<&mut Sprite>| {
sprites.get_mut(hover.entity).unwrap().color = YELLOW.into();
});
UI nodes are pickable by default. Attach observers to specific elements:
commands.spawn(button()).observe(|click: On<Pointer<Click>>| {
info!("Button clicked!");
});
Add MeshPickingPlugin. Use observers on mesh entities:
commands.spawn((
Mesh3d(meshes.add(Cuboid::from_length(5.))),
MeshMaterial3d(materials.add(Color::from(SILVER))),
)).observe(|drag: On<Pointer<Drag>>, mut transforms: Query<&mut Transform>| {
let mut t = transforms.get_mut(drag.entity).unwrap();
t.rotate_y(drag.delta.x * 0.02);
t.rotate_x(drag.delta.y * 0.02);
});
Pickable::IGNORE // disables picking on this entity
Set MeshPickingSettings::require_markers to true for opt-in mesh picking.
PointerInput eventsPointerLocation componentsPointerHitsHoverMap (topmost entity wins)Pointer<E> eventsWithin a frame: Out/DragLeave first, then DragEnter/Over, then movement/press/drag events in any order.