reckfellENGINE

Camera2D

Camera node for 2D scenes.

On this page
class Camera2DReckfellSharpInherits Entity2D

Camera node for 2D scenes.

Camera node for 2D scenes. It forces the screen (current layer) to scroll following this node. This makes it easier (and faster) to program scrollable scenes than manually changing the position of CanvasItem-based nodes. Cameras register themselves in the nearest Viewport node (when ascending the tree). Only one camera can be active per viewport. If no viewport is available ascending the tree, the camera will register in the global viewport. This node is intended to be a simple helper to get things going quickly, but more functionality may be desired to change how the camera works. To make your own custom camera node, inherit it from Entity2D and change the transform of the canvas by setting Viewport.CanvasTransform in Viewport (you can obtain the current Viewport by using Entity.GetViewport). Note that the Camera2D node's Entity2D.GlobalPosition doesn't represent the actual position of the screen, which may differ due to applied smoothing or limits. You can use Camera2D.GetScreenCenterPosition to get the real position. Same for the node's Entity2D.GlobalRotation which may be different due to applied rotation smoothing. You can use Camera2D.GetScreenRotation to get the current rotation of the screen.

Declarations checked against C# SDK 1.0.0. Expand a name to see declarations and documentation.

Constructors1

Camera2DConstructor
# Camera2D
C#
public Camera2D();

Properties28

AnchorModeProperty
# AnchorMode
C#
public Camera2D.AnchorModeEnum AnchorMode { get; set; }

The Camera2D's anchor point.

CustomViewportProperty
# CustomViewport
C#
public Entity CustomViewport { get; set; }

The custom Viewport node attached to the Camera2D. If null or not a Viewport, uses the default viewport instead.

DragBottomMarginProperty
# DragBottomMargin
C#
public float DragBottomMargin { get; set; }

Bottom margin needed to drag the camera. A value of 1 makes the camera move only when reaching the bottom edge of the screen.

DragHorizontalEnabledProperty
# DragHorizontalEnabled
C#
public bool DragHorizontalEnabled { get; set; }

If true, the camera only moves when reaching the horizontal (left and right) drag margins. If false, the camera moves horizontally regardless of margins.

DragHorizontalOffsetProperty
# DragHorizontalOffset
C#
public float DragHorizontalOffset { get; set; }

The relative horizontal drag offset of the camera between the right (-1) and left (1) drag margins. Note: Used to set the initial horizontal drag offset; determine the current offset; or force the current offset. It's not automatically updated when Camera2D.DragHorizontalEnabled is true or the drag margins are changed.

DragLeftMarginProperty
# DragLeftMargin
C#
public float DragLeftMargin { get; set; }

Left margin needed to drag the camera. A value of 1 makes the camera move only when reaching the left edge of the screen.

DragRightMarginProperty
# DragRightMargin
C#
public float DragRightMargin { get; set; }

Right margin needed to drag the camera. A value of 1 makes the camera move only when reaching the right edge of the screen.

DragTopMarginProperty
# DragTopMargin
C#
public float DragTopMargin { get; set; }

Top margin needed to drag the camera. A value of 1 makes the camera move only when reaching the top edge of the screen.

DragVerticalEnabledProperty
# DragVerticalEnabled
C#
public bool DragVerticalEnabled { get; set; }

If true, the camera only moves when reaching the vertical (top and bottom) drag margins. If false, the camera moves vertically regardless of the drag margins.

DragVerticalOffsetProperty
# DragVerticalOffset
C#
public float DragVerticalOffset { get; set; }

The relative vertical drag offset of the camera between the bottom (-1) and top (1) drag margins. Note: Used to set the initial vertical drag offset; determine the current offset; or force the current offset. It's not automatically updated when Camera2D.DragVerticalEnabled is true or the drag margins are changed.

EditorDrawDragMarginProperty
# EditorDrawDragMargin
C#
public bool EditorDrawDragMargin { get; set; }

If true, draws the camera's drag margin rectangle in the editor.

EditorDrawLimitsProperty
# EditorDrawLimits
C#
public bool EditorDrawLimits { get; set; }

If true, draws the camera's limits rectangle in the editor.

EditorDrawScreenProperty
# EditorDrawScreen
C#
public bool EditorDrawScreen { get; set; }

If true, draws the camera's screen rectangle in the editor.

EnabledProperty
# Enabled
C#
public bool Enabled { get; set; }

Controls whether the camera can be active or not. If true, the Camera2D will become the main camera when it enters the scene tree and there is no active camera currently (see Viewport.GetCamera2D). When the camera is currently active and Camera2D.Enabled is set to false, the next enabled Camera2D in the scene tree will become active.

IgnoreRotationProperty
# IgnoreRotation
C#
public bool IgnoreRotation { get; set; }

If true, the camera's rendered view is not affected by its Entity2D.Rotation and Entity2D.GlobalRotation.

LimitBottomProperty
# LimitBottom
C#
public int LimitBottom { get; set; }

Bottom scroll limit in pixels. The camera stops moving when reaching this value, but Camera2D.Offset can push the view past the limit.

LimitEnabledProperty
# LimitEnabled
C#
public bool LimitEnabled { get; set; }

If true, the limits will be enabled. Disabling this will allow the camera to focus anywhere, when the four limit_* properties will not work.

LimitLeftProperty
# LimitLeft
C#
public int LimitLeft { get; set; }

Left scroll limit in pixels. The camera stops moving when reaching this value, but Camera2D.Offset can push the view past the limit.

LimitRightProperty
# LimitRight
C#
public int LimitRight { get; set; }

Right scroll limit in pixels. The camera stops moving when reaching this value, but Camera2D.Offset can push the view past the limit.

LimitSmoothedProperty
# LimitSmoothed
C#
public bool LimitSmoothed { get; set; }

If true, the camera smoothly stops when reaches its limits. This property has no effect if Camera2D.PositionSmoothingEnabled is false. Note: To immediately update the camera's position to be within limits without smoothing, even with this setting enabled, invoke Camera2D.ResetSmoothing.

LimitTopProperty
# LimitTop
C#
public int LimitTop { get; set; }

Top scroll limit in pixels. The camera stops moving when reaching this value, but Camera2D.Offset can push the view past the limit.

OffsetProperty
# Offset
C#
public Vector2 Offset { get; set; }

The camera's relative offset. Useful for looking around or camera shake animations. The offsetted camera can go past the limits defined in Camera2D.LimitTop, Camera2D.LimitBottom, Camera2D.LimitLeft and Camera2D.LimitRight.

PositionSmoothingEnabledProperty
# PositionSmoothingEnabled
C#
public bool PositionSmoothingEnabled { get; set; }

If true, the camera's view smoothly moves towards its target position at Camera2D.PositionSmoothingSpeed.

PositionSmoothingSpeedProperty
# PositionSmoothingSpeed
C#
public float PositionSmoothingSpeed { get; set; }

Speed in pixels per second of the camera's smoothing effect when Camera2D.PositionSmoothingEnabled is true.

ProcessCallbackProperty
# ProcessCallback
C#
public Camera2D.Camera2DProcessCallback ProcessCallback { get; set; }

The camera's process callback.

RotationSmoothingEnabledProperty
# RotationSmoothingEnabled
C#
public bool RotationSmoothingEnabled { get; set; }

If true, the camera's view smoothly rotates, via asymptotic smoothing, to align with its target rotation at Camera2D.RotationSmoothingSpeed. Note: This property has no effect if Camera2D.IgnoreRotation is true.

RotationSmoothingSpeedProperty
# RotationSmoothingSpeed
C#
public float RotationSmoothingSpeed { get; set; }

The angular, asymptotic speed of the camera's rotation smoothing effect when Camera2D.RotationSmoothingEnabled is true.

ZoomProperty
# Zoom
C#
public Vector2 Zoom { get; set; }

The camera's zoom. Higher values are more zoomed in. For example, a zoom of Vector2(2.0, 2.0) will be twice as zoomed in on each axis (the view covers an area four times smaller). In contrast, a zoom of Vector2(0.5, 0.5) will be twice as zoomed out on each axis (the view covers an area four times larger). The X and Y components should generally always be set to the same value, unless you wish to stretch the camera view. Note: FontFile.Oversampling does not take Camera2D zoom into account. This means that zooming in/out will cause bitmap fonts and rasterized (non-MSDF) dynamic fonts to appear blurry or pixelated unless the font is part of a CanvasLayer that makes it ignore camera zoom. To ensure text remains crisp regardless of zoom, you can enable MSDF font rendering by enabling ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field (applies to the default project font only), or enabling Multichannel Signed Distance Field in the import options of a DynamicFont for custom fonts. On system fonts, SystemFont.MultichannelSignedDistanceField can be enabled in the inspector.

Methods52

Alignvoid
# Align
C#
public void Align();

Aligns the camera to the tracked node. Note: Calling Camera2D.ForceUpdateScroll after this method is not required.

ForceUpdateScrollvoid
# ForceUpdateScroll
C#
public void ForceUpdateScroll();

Forces the camera to update scroll immediately.

GetAnchorModeCamera2D.AnchorModeEnum
# GetAnchorMode
C#
public Camera2D.AnchorModeEnum GetAnchorMode();
Returns Camera2D.AnchorModeEnum
GetCustomViewportEntity
# GetCustomViewport
C#
public Entity GetCustomViewport();
Returns Entity
GetDragHorizontalOffsetfloat
# GetDragHorizontalOffset
C#
public float GetDragHorizontalOffset();
Returns float
GetDragMarginfloat
# GetDragMargin
C#
public float GetDragMargin(Side margin);

Returns the specified Side's margin. See also Camera2D.DragBottomMargin, Camera2D.DragTopMargin, Camera2D.DragLeftMargin, and Camera2D.DragRightMargin.

Parameters
NameTypeDefault
marginSide—
Returns float
GetDragVerticalOffsetfloat
# GetDragVerticalOffset
C#
public float GetDragVerticalOffset();
Returns float
GetLimitint
# GetLimit
C#
public int GetLimit(Side margin);

Returns the camera limit for the specified Side. See also Camera2D.LimitBottom, Camera2D.LimitTop, Camera2D.LimitLeft, and Camera2D.LimitRight.

Parameters
NameTypeDefault
marginSide—
Returns int
GetOffsetVector2
# GetOffset
C#
public Vector2 GetOffset();
Returns Vector2
GetPositionSmoothingSpeedfloat
# GetPositionSmoothingSpeed
C#
public float GetPositionSmoothingSpeed();
Returns float
GetProcessCallbackCamera2D.Camera2DProcessCallback
# GetProcessCallback
C#
public Camera2D.Camera2DProcessCallback GetProcessCallback();
Returns Camera2D.Camera2DProcessCallback
GetRotationSmoothingSpeedfloat
# GetRotationSmoothingSpeed
C#
public float GetRotationSmoothingSpeed();
Returns float
GetScreenCenterPositionVector2
# GetScreenCenterPosition
C#
public Vector2 GetScreenCenterPosition();

Returns the center of the screen from this camera's point of view, in global coordinates. Note: The exact targeted position of the camera may be different. See Camera2D.GetTargetPosition.

Returns Vector2
GetScreenRotationfloat
# GetScreenRotation
C#
public float GetScreenRotation();

Returns the current screen rotation from this camera's point of view. Note: The screen rotation can be different from Entity2D.GlobalRotation if the camera is rotating smoothly due to Camera2D.RotationSmoothingEnabled.

Returns float
GetTargetPositionVector2
# GetTargetPosition
C#
public Vector2 GetTargetPosition();

Returns this camera's target position, in global coordinates. Note: The returned value is not the same as Entity2D.GlobalPosition, as it is affected by the drag properties. It is also not the same as the current position if Camera2D.PositionSmoothingEnabled is true (see Camera2D.GetScreenCenterPosition).

Returns Vector2
GetZoomVector2
# GetZoom
C#
public Vector2 GetZoom();
Returns Vector2
IsCurrentbool
# IsCurrent
C#
public bool IsCurrent();

Returns true if this Camera2D is the active camera (see Viewport.GetCamera2D).

Returns bool
IsDragHorizontalEnabledbool
# IsDragHorizontalEnabled
C#
public bool IsDragHorizontalEnabled();
Returns bool
IsDragVerticalEnabledbool
# IsDragVerticalEnabled
C#
public bool IsDragVerticalEnabled();
Returns bool
IsEnabledbool
# IsEnabled
C#
public bool IsEnabled();
Returns bool
IsIgnoringRotationbool
# IsIgnoringRotation
C#
public bool IsIgnoringRotation();
Returns bool
IsLimitDrawingEnabledbool
# IsLimitDrawingEnabled
C#
public bool IsLimitDrawingEnabled();
Returns bool
IsLimitEnabledbool
# IsLimitEnabled
C#
public bool IsLimitEnabled();
Returns bool
IsLimitSmoothingEnabledbool
# IsLimitSmoothingEnabled
C#
public bool IsLimitSmoothingEnabled();
Returns bool
IsMarginDrawingEnabledbool
# IsMarginDrawingEnabled
C#
public bool IsMarginDrawingEnabled();
Returns bool
IsPositionSmoothingEnabledbool
# IsPositionSmoothingEnabled
C#
public bool IsPositionSmoothingEnabled();
Returns bool
IsRotationSmoothingEnabledbool
# IsRotationSmoothingEnabled
C#
public bool IsRotationSmoothingEnabled();
Returns bool
IsScreenDrawingEnabledbool
# IsScreenDrawingEnabled
C#
public bool IsScreenDrawingEnabled();
Returns bool
MakeCurrentvoid
# MakeCurrent
C#
public void MakeCurrent();

Forces this Camera2D to become the current active one. Camera2D.Enabled must be true.

ResetSmoothingvoid
# ResetSmoothing
C#
public void ResetSmoothing();

Sets the camera's position immediately to its current smoothing destination. This method has no effect if Camera2D.PositionSmoothingEnabled is false.

SetAnchorModevoid
# SetAnchorMode
C#
public void SetAnchorMode(Camera2D.AnchorModeEnum anchorMode);
Parameters
NameTypeDefault
anchorModeCamera2D.AnchorModeEnum—
SetCustomViewportvoid
# SetCustomViewport
C#
public void SetCustomViewport(Entity viewport);
Parameters
NameTypeDefault
viewportEntity—
SetDragHorizontalEnabledvoid
# SetDragHorizontalEnabled
C#
public void SetDragHorizontalEnabled(bool enabled);
Parameters
NameTypeDefault
enabledbool—
SetDragHorizontalOffsetvoid
# SetDragHorizontalOffset
C#
public void SetDragHorizontalOffset(float offset);
Parameters
NameTypeDefault
offsetfloat—
SetDragMarginvoid
# SetDragMargin
C#
public void SetDragMargin(Side margin, float dragMargin);

Sets the specified Side's margin. See also Camera2D.DragBottomMargin, Camera2D.DragTopMargin, Camera2D.DragLeftMargin, and Camera2D.DragRightMargin.

Parameters
NameTypeDefault
marginSide—
dragMarginfloat—
SetDragVerticalEnabledvoid
# SetDragVerticalEnabled
C#
public void SetDragVerticalEnabled(bool enabled);
Parameters
NameTypeDefault
enabledbool—
SetDragVerticalOffsetvoid
# SetDragVerticalOffset
C#
public void SetDragVerticalOffset(float offset);
Parameters
NameTypeDefault
offsetfloat—
SetEnabledvoid
# SetEnabled
C#
public void SetEnabled(bool enabled);
Parameters
NameTypeDefault
enabledbool—
SetIgnoreRotationvoid
# SetIgnoreRotation
C#
public void SetIgnoreRotation(bool ignore);
Parameters
NameTypeDefault
ignorebool—
SetLimitvoid
# SetLimit
C#
public void SetLimit(Side margin, int limit);

Sets the camera limit for the specified Side. See also Camera2D.LimitBottom, Camera2D.LimitTop, Camera2D.LimitLeft, and Camera2D.LimitRight.

Parameters
NameTypeDefault
marginSide—
limitint—
SetLimitDrawingEnabledvoid
# SetLimitDrawingEnabled
C#
public void SetLimitDrawingEnabled(bool limitDrawingEnabled);
Parameters
NameTypeDefault
limitDrawingEnabledbool—
SetLimitEnabledvoid
# SetLimitEnabled
C#
public void SetLimitEnabled(bool limitEnabled);
Parameters
NameTypeDefault
limitEnabledbool—
SetLimitSmoothingEnabledvoid
# SetLimitSmoothingEnabled
C#
public void SetLimitSmoothingEnabled(bool limitSmoothingEnabled);
Parameters
NameTypeDefault
limitSmoothingEnabledbool—
SetMarginDrawingEnabledvoid
# SetMarginDrawingEnabled
C#
public void SetMarginDrawingEnabled(bool marginDrawingEnabled);
Parameters
NameTypeDefault
marginDrawingEnabledbool—
SetOffsetvoid
# SetOffset
C#
public void SetOffset(Vector2 offset);
Parameters
NameTypeDefault
offsetVector2—
SetPositionSmoothingEnabledvoid
# SetPositionSmoothingEnabled
C#
public void SetPositionSmoothingEnabled(bool enabled);
Parameters
NameTypeDefault
enabledbool—
SetPositionSmoothingSpeedvoid
# SetPositionSmoothingSpeed
C#
public void SetPositionSmoothingSpeed(float positionSmoothingSpeed);
Parameters
NameTypeDefault
positionSmoothingSpeedfloat—
SetProcessCallbackvoid
# SetProcessCallback
C#
public void SetProcessCallback(Camera2D.Camera2DProcessCallback mode);
Parameters
NameTypeDefault
modeCamera2D.Camera2DProcessCallback—
SetRotationSmoothingEnabledvoid
# SetRotationSmoothingEnabled
C#
public void SetRotationSmoothingEnabled(bool enabled);
Parameters
NameTypeDefault
enabledbool—
SetRotationSmoothingSpeedvoid
# SetRotationSmoothingSpeed
C#
public void SetRotationSmoothingSpeed(float speed);
Parameters
NameTypeDefault
speedfloat—
SetScreenDrawingEnabledvoid
# SetScreenDrawingEnabled
C#
public void SetScreenDrawingEnabled(bool screenDrawingEnabled);
Parameters
NameTypeDefault
screenDrawingEnabledbool—
SetZoomvoid
# SetZoom
C#
public void SetZoom(Vector2 zoom);
Parameters
NameTypeDefault
zoomVector2—

Camera2D.AnchorModeEnum

ValueDescription
DragCenter = 1

The camera's position takes into account vertical/horizontal offsets and the screen size.

FixedTopLeft = 0

The camera's position is fixed so that the top-left corner is always at the origin.

Camera2D.Camera2DProcessCallback

ValueDescription
Idle = 1

The camera updates during process frames (see Entity.NotificationInternalProcess).

Physics = 0

The camera updates during physics frames (see Entity.NotificationInternalPhysicsProcess).

Reckfell Engine documentationBack to top ↑
QUICK LINKSGetting startedEntity hierarchyC# & .NET 10Scenes and prefabs
Reckfell guides and full API K
reckfellENGINE
RECKFELL ACCOUNT

Sign in

Sign in to your Reckfell account.

One account for the entire Reckfell platform.