GEt or set the camera's acceleration
Get or set zoom acceleration
Get or set rate of change in zoom, defaults to 0
Direct access to the game object event dispatcher.
Get or set the camera's position
Current rotation of the camera
Current angular velocity
Get or set the camera's velocity
Get or set current zoom of the camera, defaults to 1
Get or set the camera's angular velocity
Get or set the camera's angular velocity
Get or set the camera's x acceleration
Get or set the camera's x acceleration
Get or set the camera's y acceleration
Get or set the camera's y acceleration
Get or set the camera's x velocity
Get or set the camera's x velocity
Get or set the camera's y velocity
Get or set the camera's y velocity
Gets the bounding box of the viewport of this camera in world coordinates
Get the camera's x position
Set the camera's x position (cannot be set when following an Actor or when moving)
Get the camera's y position
Set the camera's y position (cannot be set when following an Actor or when moving)
It is not recommended that internal excalibur methods be overridden, do so at your own risk.
Internal _preupdate handler for onPostUpdate lifecycle event
It is not recommended that internal excalibur methods be overridden, do so at your own risk.
Internal _preupdate handler for onPreUpdate lifecycle event
Adds a new camera strategy to this camera
Instance of an CameraStrategy
Clears all camera strategies from the camera
Applies the relevant transformations to the game canvas to "move" or apply effects to the Camera
Canvas context to apply transformations
Emits a new event
Name of the event to emit
Data associated with this event
Returns the focal point of the camera, a new point giving the x and y position of the camera
Gets the current zoom scale
This moves the camera focal point to the specified position using specified easing function. Cannot move when following an Actor.
The target position to move to
The duration in milliseconds the move should last
A Promise that resolves when movement is finished, including if it's interrupted. The Promise value is the Vector of the target position. It will be rejected if a move cannot be made.
Safe to override onPostUpdate lifecycle event handler. Synonymous with .on('preupdate', (evt) =>{...})
onPostUpdate
is called directly after a scene is updated.
Safe to override onPostUpdate lifecycle event handler. Synonymous with .on('preupdate', (evt) =>{...})
onPostUpdate
is called directly after a scene is updated.
Safe to override onPreUpdate lifecycle event handler. Synonymous with .on('preupdate', (evt) =>{...})
onPreUpdate
is called directly before a scene is updated.
Removes a camera strategy by reference
Instance of an CameraStrategy
Sets the camera to shake at the specified magnitudes for the specified duration
The x magnitude of the shake
The y magnitude of the shake
The duration of the shake in milliseconds
Zooms the camera in or out by the specified scale over the specified duration. If no duration is specified, it take effect immediately.
The scale of the zoom
The duration of the zoom in milliseconds
Cameras
Camera is the base class for all Excalibur cameras. Cameras are used to move around your game and set focus. They are used to determine what is "off screen" and can be used to scale the game.
Cameras are attached to Scenes and can be changed by setting Scene.camera. By default, a Scene is initialized with a Camera that doesn't move and is centered on the screen.
Focus
Cameras have a position (x, y) which means they center around a specific point.
If a camera is following an Actor, it will ensure the Actor is always at the center of the screen. You can use x and y instead if you wish to offset the focal point.
Camera strategies
Cameras can implement a number of strategies to track, follow, or exhibit custom behavior in relation to a target. A common reason to use a strategy is to have the Camera follow an Actor.
In order to user the different built-in strategies, you can access
Camera.strategy
Lock the camera exactly to the center of the actor's bounding box
Lock the camera to one axis of the actor, in this case follow the actors x position
Elastically move the camera to an actor in a smooth motion see ElasticToActorStrategy for details
Keep the actor within a circle around the focus
Keep the camera limited within camera constraints.
Make sure that the camera bounds are at least as large as the viewport size.
let boundingBox = new BoundingBox(leftBorder, topBorder, rightBorder, bottomBorder); game.currentScene.camera.strategy.limitCameraBounds(boundingBox);
Custom strategies
Custom strategies can be implemented by extending the CameraStrategy interface and added to cameras to build novel behavior with
ex.Camera.addStrategy<T>(new MyCameraStrategy<T>())
.As shown below a camera strategy calculates a new camera position (
ex.Vector
) every frame given a target type, camera, engine, and elapsed delta in milliseconds./** * Interface that describes a custom camera strategy for tracking targets */ export interface CameraStrategy<T> { /** * Target of the camera strategy that will be passed to the action */ target: T; /** * Camera strategies perform an action to calculate a new focus returned out of the strategy */ action: (target: T, camera: Camera, engine: Engine, delta: number) => Vector; }
Camera Shake
To add some fun effects to your game, the shake method will do a random shake. This is great for explosions, damage, and other in-game effects.
Camera Lerp
"Lerp" is short for Linear Interpolation and it enables the camera focus to move smoothly between two points using timing functions. Use move to ease to a specific point using a provided EasingFunction.
Camera Zooming
To adjust the zoom for your game, use zoom which will scale the game accordingly. You can pass a duration to transition between zoom levels.
Known Issues
Actors following a path will wobble when camera is moving
Issue #276