Class Camera2D
Camera node for 2D scenes.
- Inheritance
-
Camera2D
Remarks
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 Node2D and change the transform of the canvas by setting canvas_transform in Viewport (you can obtain the current Viewport by using get_viewport).
Note that the Camera2D node's position
doesn't represent the actual position of the screen, which may differ due to applied smoothing or limits. You can use get_screen_center_position to get the real position.
See Also
Properties
anchor_mode
The Camera2D's anchor point. See AnchorMode constants.
var anchor_mode : int = 1
Property Value
Remarks
custom_viewport
The custom Viewport node attached to the Camera2D. If null
or not a Viewport, uses the default viewport instead.
var custom_viewport : Node
Property Value
Remarks
drag_bottom_margin
Bottom margin needed to drag the camera. A value of 1
makes the camera move only when reaching the bottom edge of the screen.
var drag_bottom_margin : float = 0.2
Property Value
Remarks
drag_horizontal_enabled
If true
, the camera only moves when reaching the horizontal (left and right) drag margins. If false
, the camera moves horizontally regardless of margins.
var drag_horizontal_enabled : bool = false
Property Value
Remarks
drag_horizontal_offset
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 drag_horizontal_enabled is true
or the drag margins are changed.
var drag_horizontal_offset : float = 0.0
Property Value
Remarks
drag_left_margin
Left margin needed to drag the camera. A value of 1
makes the camera move only when reaching the left edge of the screen.
var drag_left_margin : float = 0.2
Property Value
Remarks
drag_right_margin
Right margin needed to drag the camera. A value of 1
makes the camera move only when reaching the right edge of the screen.
var drag_right_margin : float = 0.2
Property Value
Remarks
drag_top_margin
Top margin needed to drag the camera. A value of 1
makes the camera move only when reaching the top edge of the screen.
var drag_top_margin : float = 0.2
Property Value
Remarks
drag_vertical_enabled
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.
var drag_vertical_enabled : bool = false
Property Value
Remarks
drag_vertical_offset
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 drag_vertical_enabled is true
or the drag margins are changed.
var drag_vertical_offset : float = 0.0
Property Value
Remarks
editor_draw_drag_margin
If true
, draws the camera's drag margin rectangle in the editor.
var editor_draw_drag_margin : bool = false
Property Value
Remarks
editor_draw_limits
If true
, draws the camera's limits rectangle in the editor.
var editor_draw_limits : bool = false
Property Value
Remarks
editor_draw_screen
If true
, draws the camera's screen rectangle in the editor.
var editor_draw_screen : bool = true
Property Value
Remarks
enabled
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 get_camera_2d).
When the camera is currently active and enabled is set to false
, the next enabled Camera2D in the scene tree will become active.
var enabled : bool = true
Property Value
Remarks
ignore_rotation
If true
, the camera's rendered view is not affected by its rotation and global_rotation.
var ignore_rotation : bool = true
Property Value
Remarks
limit_bottom
Bottom scroll limit in pixels. The camera stops moving when reaching this value, but offset can push the view past the limit.
var limit_bottom : int = 10000000
Property Value
Remarks
limit_left
Left scroll limit in pixels. The camera stops moving when reaching this value, but offset can push the view past the limit.
var limit_left : int = -10000000
Property Value
Remarks
limit_right
Right scroll limit in pixels. The camera stops moving when reaching this value, but offset can push the view past the limit.
var limit_right : int = 10000000
Property Value
Remarks
limit_smoothed
If true
, the camera smoothly stops when reaches its limits.
This property has no effect if position_smoothing_enabled is false
.
Note: To immediately update the camera's position to be within limits without smoothing, even with this setting enabled, invoke reset_smoothing.
var limit_smoothed : bool = false
Property Value
Remarks
limit_top
Top scroll limit in pixels. The camera stops moving when reaching this value, but offset can push the view past the limit.
var limit_top : int = -10000000
Property Value
Remarks
offset
The camera's relative offset. Useful for looking around or camera shake animations. The offsetted camera can go past the limits defined in limit_top, limit_bottom, limit_left and limit_right.
var offset : Vector2 = Vector2(0, 0)
Property Value
Remarks
position_smoothing_enabled
If true
, the camera's view smoothly moves towards its target position at position_smoothing_speed.
var position_smoothing_enabled : bool = false
Property Value
Remarks
position_smoothing_speed
Speed in pixels per second of the camera's smoothing effect when position_smoothing_enabled is true
.
var position_smoothing_speed : float = 5.0
Property Value
Remarks
process_callback
The camera's process callback. See Camera2DProcessCallback.
var process_callback : int = 1
Property Value
Remarks
rotation_smoothing_enabled
If true
, the camera's view smoothly rotates, via asymptotic smoothing, to align with its target rotation at rotation_smoothing_speed.
Note: This property has no effect if ignore_rotation is true
.
var rotation_smoothing_enabled : bool = false
Property Value
Remarks
rotation_smoothing_speed
The angular, asymptotic speed of the camera's rotation smoothing effect when rotation_smoothing_enabled is true
.
var rotation_smoothing_speed : float = 5.0
Property Value
Remarks
zoom
The camera's zoom. A zoom of Vector(2, 2)
doubles the size seen in the viewport. A zoom of Vector(0.5, 0.5)
halves the size seen in the viewport.
Note: 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 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, multichannel_signed_distance_field can be enabled in the inspector.
var zoom : Vector2 = Vector2(1, 1)
Property Value
Remarks
Methods
align
Aligns the camera to the tracked node.
void align
force_update_scroll
Forces the camera to update scroll immediately.
void force_update_scroll
get_drag_margin(int)
Qualifiers: const
Returns the specified Side's margin. See also drag_bottom_margin, drag_top_margin, drag_left_margin, and drag_right_margin.
float get_drag_margin(int margin)
Parameters
margin
int
get_limit(int)
Qualifiers: const
Returns the camera limit for the specified Side. See also limit_bottom, limit_top, limit_left, and limit_right.
int get_limit(int margin)
Parameters
margin
int
get_screen_center_position
Qualifiers: const
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 get_target_position.
Vector2 get_screen_center_position
get_target_position
Qualifiers: const
Returns this camera's target position, in global coordinates.
Note: The returned value is not the same as global_position, as it is affected by the drag properties. It is also not the same as the current position if position_smoothing_enabled is true
(see get_screen_center_position).
Vector2 get_target_position
is_current
Qualifiers: const
Returns true
if this Camera2D is the active camera (see get_camera_2d).
bool is_current
make_current
Forces this Camera2D to become the current active one. enabled must be true
.
void make_current
reset_smoothing
Sets the camera's position immediately to its current smoothing destination.
This method has no effect if position_smoothing_enabled is false
.
void reset_smoothing
set_drag_margin(int, float)
Sets the specified Side's margin. See also drag_bottom_margin, drag_top_margin, drag_left_margin, and drag_right_margin.
void set_drag_margin(int margin, float drag_margin)
Parameters
set_limit(int, int)
Sets the camera limit for the specified Side. See also limit_bottom, limit_top, limit_left, and limit_right.
void set_limit(int margin, int limit)