
[](https://crates.io/crates/bevy/0.11.2)
[](https://crates.io/crates/bevy_touch_camera)
[](https://docs.rs/bevy_touch_camera)
[](https://github.com/d-bucur/bevy_touch_camera/actions/workflows/ci.yaml)
[](https://github.com/bevyengine/bevy/blob/main/docs/plugins_guidelines.md#main-branch-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.
```rust
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]
```rust
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
| 0.1 | 0.11 |
| 0.1.2 | 0.12 |
## 🪪 License
Either one:
- [Apache 2](LICENSE-APACHE)
- [MIT](LICENSE-MIT)