//! Demonstrates how to grab and hide the mouse cursor. use bevy::{prelude::*, window::CursorGrabMode}; fn main() { App::new() .add_plugins(DefaultPlugins) .add_systems(Update, grab_mouse) .run(); } // This system grabs the mouse when the left mouse button is pressed // and releases it when the escape key is pressed fn grab_mouse( mut windows: Query<&mut Window>, mouse: Res>, key: Res>, ) { let mut window = windows.single_mut(); if mouse.just_pressed(MouseButton::Left) { window.cursor_options.visible = false; window.cursor_options.grab_mode = CursorGrabMode::Locked; } if key.just_pressed(KeyCode::Escape) { window.cursor_options.visible = true; window.cursor_options.grab_mode = CursorGrabMode::None; } }