Crates.io | reactor_camera |
lib.rs | reactor_camera |
version | 1.0.0 |
source | src |
created_at | 2024-07-21 17:29:08.306308 |
updated_at | 2024-07-21 17:29:08.306308 |
description | A 2D camera plugin for Bevy, inspired by the Love2D camera plugin - STALKER-X |
homepage | https://www.cobaltreactor.com |
repository | https://github.com/BobG1983/cobalt_reactor |
max_upload_size | |
id | 1310473 |
size | 17,246 |
reactor_camera
A camera system for the Bevy. Heavily inspired by the Love2D
plugin STALKER-X.
The primary feature of this plugin is the CameraBundle2D
and CameraStyle
.
CameraStyle
Three Camera Styles are defined:
A camera with this style will follow the its CameraTarget
exactly. CameraLerp
and CameraLead
have no effect.
A camera with this style will be stationary unless the CameraTarget
leaves the defined Deadzone
.
Once the target has left the deadzone the camera will lerp towards the target based on the value of CameraLerp
(values of 2.0 - 10.0 work best).
If CameraLead
has a value greater than 1.0 then the camera will instead attempt to target a number of world units ahead of the targets motion equal to the provided X and Y values.
Deadzone
is defined in world units and is not effected by the projection scale. In other words, if you zoom in the camera, the value of Deadzone
will not change.
A camera with this style will be stationary unless the CameraTarget
leaves the visible screen area.
Once the target has left the current screen the camera will lerp towards the center of the next screen based on the value of CameraLerp
(values of 2.0 - 10.0 work best).
CameraLead
has no effect.
The screen size is based on the current visible screen size, and thus takes into account the various options in bevy's OrthographicProjection
including both Scale
and ScalingMode
.
Add the crate to your Cargo.toml
, CameraPlugin
to your app, and add CameraBundle2D
to your camera.
NOTE: This plugin relies heavily on reactor_spatial. If you are not using reactor_spatial for your games spatial system, this camera system will not function.