まず、Bevyプロジェクトをセットアップします。Bevyの公式ドキュメントに従って、必要な依存関係を追加し、プロジェクトを初期化します。
次に、マウスカーソルの位置を取得するためのシステムを作成します。Bevyでは、システムという単位でゲームの振る舞いを定義します。以下の例では、マウスカーソルの位置を取得するシステムを作成します。
use bevy::prelude::*;
fn main() {
App::build()
.add_plugins(DefaultPlugins)
.add_startup_system(setup.system())
.add_system(get_cursor_position.system())
.run();
}
fn setup(commands: &mut Commands) {
commands.spawn_bundle(OrthographicCameraBundle::new_2d());
}
fn get_cursor_position(
windows: Res<Windows>,
mut cursor_position: ResMut<CursorPosition>,
) {
if let Some(window) = windows.get_primary() {
if let Some(cursor_position_in_window) = window.cursor_position() {
cursor_position.position = cursor_position_in_window;
}
}
}
struct CursorPosition {
position: Vec2,
}
上記の例では、get_cursor_position
というシステムが定義されています。このシステムは、Res<Windows>
とResMut<CursorPosition>
を引数として受け取ります。Res<Windows>
はウィンドウ管理に関するリソースを持ち、ResMut<CursorPosition>
はマウスカーソルの位置を保持するリソースです。
get_cursor_position
関数内では、windows.get_primary()
を使用してプライマリウィンドウを取得し、window.cursor_position()
を使用してマウスカーソルの位置を取得しています。取得した位置情報はcursor_position.position
に格納されます。
最後に、このシステムを実行するためにBevyアプリケーションをビルドし、起動します。マウスカーソルの位置はcursor_position.position
から取得することができます。
これで、Bevyを使用してマウスカーソルの位置を取得する方法を学びました。ゲーム開発においては、この方法を応用してさまざまな機能を実装することができます。ぜひ試してみてください!