bevy_mouse_tracking_plugin
Versions
Bevy Version | Crate Version |
---|---|
0.12 | 0.7 |
0.11 | 0.6 |
0.9 | 0.5 |
0.8 | 0.4 |
0.7 | 0.2.1 |
0.6 | 0.2.0 |
main branch | main branch |
This crate aims to make mouse tracking both effortless and explicit. Tracking is opt-in and handled opaquely by this plugin.
The mouse can be tracked on a per-camera basis by querying for tracking components. Additionally, a global resource is maintained that tracks the main camera, if applicable.
Basics
use *;
use *;
// First, add the plugin to your `App`.
new
.add_plugins
.add_systems
.add_systems
// ...
// Now, we can track the mouse position by querying for it.
use MousePos;
Having to call Query::single
is a bit annoying, and potentially error-prone.
Instead, we can specify a main camera, which the plugin will treat specially.
use MainCamera;
// Now that we've specified the main camera, we can get the mouse position using a global resource.
World-space
We can do better than just screen-space: this crate supports automatic
transformation to world-space coordinates via [MousePosWorld
]
-- this is can be accessed as either a component or a resource.
use MousePosWorld;
// Getting the world-space position using a query.
// Getting it using the resource.
Note that this is only supported for two-dimensional, orthographic cameras, but pull requests for 3D support are welcome!
If you do not specify a [MainCamera
], the [MousePos
] and [MousePosWorld
]
resources will still exist, but they will always be zero.
Mouse motion
This crate supports a resource that tracks mouse motion, via [MouseMotionPlugin
].
The motion can be accessed from any system in a [MouseMotion
] resource.
Crate name
As a final aside: the name of this crate is intentionally verbose,
since it is very likely that this crate will eventually be made redundant by future updates to Bevy.
I recommend renaming the crate in your Cargo.toml
:
[]
= { = "bevy_mouse_tracking_plugin", = "..." }
License: MIT