mouse_input/
mouse_input.rs

1//! Prints mouse button events.
2
3use bevy::{
4    input::mouse::{AccumulatedMouseMotion, AccumulatedMouseScroll},
5    prelude::*,
6};
7
8fn main() {
9    App::new()
10        .add_plugins(DefaultPlugins)
11        .add_systems(Update, (mouse_click_system, mouse_move_system))
12        .run();
13}
14
15// This system prints messages when you press or release the left mouse button:
16fn mouse_click_system(mouse_button_input: Res<ButtonInput<MouseButton>>) {
17    if mouse_button_input.pressed(MouseButton::Left) {
18        info!("left mouse currently pressed");
19    }
20
21    if mouse_button_input.just_pressed(MouseButton::Left) {
22        info!("left mouse just pressed");
23    }
24
25    if mouse_button_input.just_released(MouseButton::Left) {
26        info!("left mouse just released");
27    }
28}
29
30// This system prints messages when you finish dragging or scrolling with your mouse
31fn mouse_move_system(
32    accumulated_mouse_motion: Res<AccumulatedMouseMotion>,
33    accumulated_mouse_scroll: Res<AccumulatedMouseScroll>,
34) {
35    if accumulated_mouse_motion.delta != Vec2::ZERO {
36        let delta = accumulated_mouse_motion.delta;
37        info!("mouse moved ({}, {})", delta.x, delta.y);
38    }
39    if accumulated_mouse_scroll.delta != Vec2::ZERO {
40        let delta = accumulated_mouse_scroll.delta;
41        info!("mouse scrolled ({}, {})", delta.x, delta.y);
42    }
43}