Camera2D

Inherits: Node2D < CanvasItem < Node < Object

二维场景的相机节点。

描述

用于 2D 场景的相机节点。它强制屏幕(当前层)跟随该节点滚动。与手动改变基于 CanvasItem 节点的坐标相比,这使得对可滚动场景进行编程更加容易和快捷。

这个节点旨在成为简单的辅助工具,让事情便捷,但可能需要更多的功能来改变相机的工作方式。要制作自定义相机节点,则从 Node2D 继承,并通过设置 Viewport 中的 Viewport.canvas_transform 来改变画布的变换(你可以通过使用 Node.get_viewport 获得当前的 Viewport)。

请注意,Camera2D 节点的 position 并不代表屏幕的实际坐标,它可能会因为应用的平滑或限制而有所不同。你可以使用 get_camera_screen_center 来获取实际坐标。

教程

属性

AnchorMode

anchor_mode

1

bool

current

false

Node

custom_viewport

float

drag_margin_bottom

0.2

bool

drag_margin_h_enabled

false

float

drag_margin_left

0.2

float

drag_margin_right

0.2

float

drag_margin_top

0.2

bool

drag_margin_v_enabled

false

bool

editor_draw_drag_margin

false

bool

editor_draw_limits

false

bool

editor_draw_screen

true

int

limit_bottom

10000000

int

limit_left

-10000000

int

limit_right

10000000

bool

limit_smoothed

false

int

limit_top

-10000000

Vector2

offset

Vector2( 0, 0 )

float

offset_h

0.0

float

offset_v

0.0

Camera2DProcessMode

process_mode

1

bool

rotating

false

bool

smoothing_enabled

false

float

smoothing_speed

5.0

Vector2

zoom

Vector2( 1, 1 )

方法

void

align ( )

void

clear_current ( )

void

force_update_scroll ( )

Vector2

get_camera_position ( ) const

Vector2

get_camera_screen_center ( ) const

float

get_drag_margin ( Margin margin ) const

int

get_limit ( Margin margin ) const

void

make_current ( )

void

reset_smoothing ( )

void

set_drag_margin ( Margin margin, float drag_margin )

void

set_limit ( Margin margin, int limit )

枚举

enum AnchorMode:

  • ANCHOR_MODE_FIXED_TOP_LEFT = 0 —- 相机的位置是固定的,所以左上角总是在原点。

  • ANCHOR_MODE_DRAG_CENTER = 1 —- 相机的位置要考虑垂直/水平偏移和屏幕尺寸。


enum Camera2DProcessMode:

  • CAMERA2D_PROCESS_PHYSICS = 0 —- 相机通过 _physics_process 回调进行更新。

  • CAMERA2D_PROCESS_IDLE = 1 —- 相机通过 _process 回调进行更新。

属性说明

Default

1

Setter

set_anchor_mode(value)

Getter

get_anchor_mode()

Camera2D的锚点。参阅AnchorMode常量。


Default

false

Getter

is_current()

如果 true,相机是当前场景的活动相机。当前只能有一台相机,所以设置不同的相机current将禁用这台相机。


  • Node custom_viewport

Setter

set_custom_viewport(value)

Getter

get_custom_viewport()

连接到Camera2D的自定义Viewport节点。如果null或不是Viewport,则使用默认的 Viewpor。


  • float drag_margin_bottom

Default

0.2

Setter

set_drag_margin(value)

Getter

get_drag_margin()

拖动相机所需的底边距。值为1时,相机仅在到达屏幕边缘时才会移动。


  • bool drag_margin_h_enabled

Default

false

Setter

set_h_drag_enabled(value)

Getter

is_h_drag_enabled()

如果 true,相机仅在达到水平拖动边距时才移动。如果false,相机会水平移动而不管边距。


Default

0.2

Setter

set_drag_margin(value)

Getter

get_drag_margin()

拖动相机所需的左边缘。值为1时,相机仅在到达屏幕边缘时才会移动。


Default

0.2

Setter

set_drag_margin(value)

Getter

get_drag_margin()

拖动相机所需的右边缘。值为1时,相机仅在到达屏幕边缘时才会移动。


Default

0.2

Setter

set_drag_margin(value)

Getter

get_drag_margin()

拖动相机所需的上边距。值为1时,相机仅在到达屏幕边缘时才会移动。


  • bool drag_margin_v_enabled

Default

false

Setter

set_v_drag_enabled(value)

Getter

is_v_drag_enabled()

如果 true,相机仅在达到垂直拖动边距时才移动。如果false,相机会垂直移动而不管边距。


  • bool editor_draw_drag_margin

Default

false

Setter

set_margin_drawing_enabled(value)

Getter

is_margin_drawing_enabled()

如果true,在编辑器中绘制相机的拖动边距矩形。


  • bool editor_draw_limits

Default

false

Setter

set_limit_drawing_enabled(value)

Getter

is_limit_drawing_enabled()

如果true,在编辑器中绘制相机的极限矩形。


  • bool editor_draw_screen

Default

true

Setter

set_screen_drawing_enabled(value)

Getter

is_screen_drawing_enabled()

如果true,在编辑器中绘制相机的画面矩形。


  • int limit_bottom

Default

10000000

Setter

set_limit(value)

Getter

get_limit()

以像素为单位的底部滚动限制。当达到这个值时,相机停止移动。


  • int limit_left

Default

-10000000

Setter

set_limit(value)

Getter

get_limit()

以像素为单位的左滚动限制。当达到这个值时,相机停止移动。


  • int limit_right

Default

10000000

Setter

set_limit(value)

Getter

get_limit()

以像素为单位的右滚动限制。当达到这个值时,相机停止移动。


  • bool limit_smoothed

Default

false

Setter

set_limit_smoothing_enabled(value)

Getter

is_limit_smoothing_enabled()

If true, the camera smoothly stops when reaches its limits.

This property has no effect if 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.


Default

-10000000

Setter

set_limit(value)

Getter

get_limit()

以像素为单位的顶部滚动限制。达到此值时,相机停止移动。


Default

Vector2( 0, 0 )

Setter

set_offset(value)

Getter

get_offset()

相机的偏移量,对于环顾四周或相机晃动动画非常有用。


Default

0.0

Setter

set_h_offset(value)

Getter

get_h_offset()

相机的水平偏移,相对于拖动边距。

注: 偏移量 H 仅用于强制执行相对于边距的偏移,如果启用拖动边距,它不会以任何方式更新,并可用于设置初始偏移量。如果启用了拖动边距,它不会以任何方式更新,可以用来设置初始偏移。


Default

0.0

Setter

set_v_offset(value)

Getter

get_v_offset()

相机相对于拖动边距的垂直偏移。

注:offset_h使用相同。


Default

1

Setter

set_process_mode(value)

Getter

get_process_mode()

相机的过程回调。请参阅Camera2DProcessMode


Default

false

Setter

set_rotating(value)

Getter

is_rotating()

If true, the camera view rotates with the target.


  • bool smoothing_enabled

Default

false

Setter

set_enable_follow_smoothing(value)

Getter

is_follow_smoothing_enabled()

如果true,相机以smoothing_speed的速度平滑地朝目标移动。


Default

5.0

Setter

set_follow_smoothing(value)

Getter

get_follow_smoothing()

smoothing_enabledtrue时,相机平滑效果的速度,以每秒像素为单位。


Default

Vector2( 1, 1 )

Setter

set_zoom(value)

Getter

get_zoom()

相机相对于视窗的缩放比例。大于Vector2(1,1)的值会缩小内容,而较小的值会起到放大镜的作用。例如,将Vector2(0.5,0.5)放大2倍,然后将Vector2(4,4)用于4倍缩小。

方法说明

  • void align ( )

将相机与跟踪的节点对齐。


  • void clear_current ( )

从父级Viewport的内部当前分配的相机中删除任何Camera2D


  • void force_update_scroll ( )

强制相机立即更新滚动。


  • Vector2 get_camera_position ( ) const

Returns the camera’s position (the tracked point the camera attempts to follow), relative to the origin.

Note: The returned value is not the same as Node2D.position or Node2D.global_position, as it is affected by the drag properties.


  • Vector2 get_camera_screen_center ( ) const

Returns the location of the Camera2D‘s screen-center, relative to the origin.

Note: The real position of the camera may be different, see get_camera_position.


返回指定的边距。另请参阅drag_margin_bottomdrag_margin_topdrag_margin_leftdrag_margin_right


返回指定的相机限制。请参阅 limit_bottomlimit_toplimit_leftlimit_right


  • void make_current ( )

使之成为场景(视窗和图层)的当前2D相机,以防场景中有很多相机。


  • void reset_smoothing ( )

Sets the camera’s position immediately to its current smoothing destination.

This method has no effect if smoothing_enabled is false.


  • void set_drag_margin ( Margin margin, float drag_margin )

设置指定的边距。另请参阅 drag_margin_bottomdrag_margin_topdrag_margin_leftdrag_margin_right


设置指定的相机限制。另请参阅 limit_bottomlimit_toplimit_leftlimit_right