Skip to content

Perrelli9338/bevy_touch_camera

 
 

Repository files navigation

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

About

Touch camera for Bevy that supports drag and pinch to zoom

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%