bevy_touch_camera

Crates.iobevy_touch_camera
lib.rsbevy_touch_camera
version0.1.2
sourcesrc
created_at2023-08-27 16:00:11.940623
updated_at2024-01-12 23:17:04.705082
descriptionTouch camera for Bevy that supports drag and pinch to zoom
homepagehttps://github.com/d-bucur/bevy_touch_camera
repositoryhttps://github.com/d-bucur/bevy_touch_camera
max_upload_size
id956169
size107,045
Dorian Bucur (d-bucur)

documentation

README

MIT/Apache 2.0 0.11 Crate Doc CI Bevy tracking

🎥 Bevy Touch Camera

A plugin for touch based camera movement. Supports one finger drag to pan and two finger pinch to zoom.

📄 Usage

Add TouchCameraPlugin to your app.

App::new().add_plugins((
    DefaultPlugins,
    TouchCameraPlugin::default()
)).run();

You can configure some of the parameters of the plugin. Changing configuration at runtime is currently not supported. 1

let config = TouchCameraConfig {
    drag_sensitivity: 2.,
    touch_time_min: 0.2,
    ..Default::default()
};
app.add_plugins((TouchCameraPlugin {config}))

The plugin will try to attach itself to a camera. This can be done in either one of the following ways:

  1. Create a single Camera component before the PostUpdate schedule. The plugin will attach itself automatically to it.
  2. Manually attach a TouchCameraTag component to the camera entity you want to be handled by the plugin. Useful if you have multiple active cameras or if method 1) is not possible.

Limitations

  • Plugin will always try to update the projection and the transform of the Camera. A separate mode is planned where updates are only written to a component so that the user can read them and mix them with other custom logic before applying to the camera.
  • Only viewport based panning and scaling is supported currently. That means that your finger won't stay in exactly the same position of the world view like in common implementations.

🔗 Bevy compatibility

bevy_touch_camera bevy
0.1 0.11
0.1.2 0.12

🪪 License

Either one:

Footnotes

  1. TODO maybe it is, need to test it and update example ↩

Commit count: 36

cargo fmt