#camera #touch #bevy

bevy_touch_camera

Touch camera for Bevy that supports drag and pinch to zoom

3 releases

0.1.2 Jan 12, 2024
0.1.1 Aug 27, 2023
0.1.0 Aug 27, 2023

#1451 in Game dev

MIT/Apache

30KB
149 lines

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:

[^1]: TODO maybe it is, need to test it and update example

Dependencies

~38–72MB
~1.5M SLoC