#camera #bevy #gamedev #screen #2d #primary #love2d

rantz_camera2d

A 2D camera plugin for Bevy, inspired by the Love2D camera plugin - STALKER-X

14 releases (4 stable)

1.1.2 Jul 20, 2024
1.1.1 Jul 9, 2024
0.5.0 Jun 24, 2024
0.4.0 Jun 19, 2024
0.3.7 May 30, 2024

#1190 in Game dev

Download history 121/week @ 2024-07-17 12/week @ 2024-07-24 1/week @ 2024-07-31 26/week @ 2024-09-11 16/week @ 2024-09-18 18/week @ 2024-09-25 3/week @ 2024-10-02

1,219 downloads per month
Used in rantz_suite

MIT/Apache

170KB
4.5K SLoC

Rantz Camera2D

A camera system for the Bevy game engine using rantz_spatial2d. Heavily inspired by the Love2D plugin STALKER-X.

Features

The primary feature of this plugin is the CameraBundle2D and CameraStyle.

CameraStyle

Three Camera Styles are defined:

  • Exact
  • Deadzone
  • Screen By Screen

Exact

A camera with this style will follow the its CameraTarget exactly. CameraLerp and CameraLead have no effect.

Deadzone

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.

Screen by Screen

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.

Usage

Add the crate to your Cargo.toml, CameraPlugin2D to your app, and add CameraBundle2D to your camera.

NOTE: This plugin relies heavily on rantz_spatial2d. If you are not using rantz_spatial2d for your games spatial system, this camera system will not function.

Dependencies

~42–79MB
~1.5M SLoC