4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bevyのマウス座標の取り方

Posted at

以前紹介したGUIクレートの中でbevyが個人的に使いやすかったので、GUIアプリを作成しようと試みてます。
その中でマウスの座標の値の取り方についてメモしておきます。

参考情報
bevy
https://github.com/bevyengine/bevy

ほぼsampleから抜粋して、構造体になっている部分の値を取得します。
必要なクレートは以下です。

Cargo.toml
[dependencies]
bevy = { git = "https://github.com/bevyengine/bevy" }
gfx = "*"

mainソースは以下です。
内容としては、Window上でマウスを操作して、マウスのクリックした方向(Left、Right)とクリックと離したことと座標をコンソールに表示してくれます。
cursor_positionはx座標とy座標を両方とも表示して、x_cursor_positionとy_cursor_positionはそれぞれの座標を表示してくれます。

main.rs
use bevy::{
    input::mouse::{MouseButtonInput},//, MouseMotion, MouseWheel},
    prelude::*,
    window::CursorMoved,
};

fn main() {
    App::build()
        .add_plugins(DefaultPlugins)
        .add_system(print_mouse_events_system.system()) //mouse event
        .run();
}

fn print_mouse_events_system(
    mut mouse_button_input_events: EventReader<MouseButtonInput>,
    mut cursor_moved_events: EventReader<CursorMoved>,
) {
    for event in mouse_button_input_events.iter() {
        let button_left_right = event.button;
        let button_press_release = event.state;
        println!("{:?}", button_left_right);
        println!("{:?}", button_press_release);
        for _cursor_event in cursor_moved_events.iter() {
            let cursor_position = _cursor_event.position;
            println!("{:?}", cursor_position);
            let x_cursor_position = cursor_position[0];
            let y_cursor_position = cursor_position[1];
            println!("{:?}", x_cursor_position);
            println!("{:?}", y_cursor_position);
        };
    }
}

表示例は以下です。

terminal
% cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.18s
     Running `target/debug/mouse-event`
Left
Pressed
Vec2(235.99947, 356.80524)
235.99947
356.80524
Left
Released
Vec2(235.99945, 356.80524)
235.99945
356.80524
Right
Pressed
Vec2(877.01013, 352.71057)
877.01013
352.71057
Right
Released
Vec2(825.2455, 321.8847)
825.2455
321.8847

拾った座標からobjectを作成するということは後ほど紹介予定です。

以上

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?