Camera2D
Inherits: Node2D < CanvasItem < Node < Object
二维场景的相机节点。
描述
用于 2D 场景的相机节点。它强制屏幕(当前层)跟随该节点滚动。与手动改变基于 CanvasItem 节点的坐标相比,这使得对可滚动场景进行编程更加容易和快捷。
这个节点旨在成为简单的辅助工具,让事情便捷,但可能需要更多的功能来改变相机的工作方式。要制作自定义相机节点,则从 Node2D 继承,并通过设置 Viewport 中的 Viewport.canvas_transform 来改变画布的变换(你可以通过使用 Node.get_viewport 获得当前的 Viewport)。
请注意,Camera2D
节点的 position
并不代表屏幕的实际坐标,它可能会因为应用的平滑或限制而有所不同。你可以使用 get_camera_screen_center 来获取实际坐标。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
void | align ( ) |
void | clear_current ( ) |
void | |
get_camera_position ( ) const | |
get_camera_screen_center ( ) const | |
get_drag_margin ( Margin margin ) const | |
void | make_current ( ) |
void | reset_smoothing ( ) |
void | set_drag_margin ( Margin margin, float drag_margin ) |
void |
枚举
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
回调进行更新。
属性说明
- AnchorMode anchor_mode
Default |
|
Setter | set_anchor_mode(value) |
Getter | get_anchor_mode() |
Camera2D的锚点。参阅AnchorMode常量。
- bool current
Default |
|
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 |
|
Setter | set_drag_margin(value) |
Getter | get_drag_margin() |
拖动相机所需的底边距。值为1
时,相机仅在到达屏幕边缘时才会移动。
- bool drag_margin_h_enabled
Default |
|
Setter | set_h_drag_enabled(value) |
Getter | is_h_drag_enabled() |
如果 true
,相机仅在达到水平拖动边距时才移动。如果false
,相机会水平移动而不管边距。
- float drag_margin_left
Default |
|
Setter | set_drag_margin(value) |
Getter | get_drag_margin() |
拖动相机所需的左边缘。值为1
时,相机仅在到达屏幕边缘时才会移动。
- float drag_margin_right
Default |
|
Setter | set_drag_margin(value) |
Getter | get_drag_margin() |
拖动相机所需的右边缘。值为1
时,相机仅在到达屏幕边缘时才会移动。
- float drag_margin_top
Default |
|
Setter | set_drag_margin(value) |
Getter | get_drag_margin() |
拖动相机所需的上边距。值为1
时,相机仅在到达屏幕边缘时才会移动。
- bool drag_margin_v_enabled
Default |
|
Setter | set_v_drag_enabled(value) |
Getter | is_v_drag_enabled() |
如果 true
,相机仅在达到垂直拖动边距时才移动。如果false
,相机会垂直移动而不管边距。
- bool editor_draw_drag_margin
Default |
|
Setter | set_margin_drawing_enabled(value) |
Getter | is_margin_drawing_enabled() |
如果true
,在编辑器中绘制相机的拖动边距矩形。
- bool editor_draw_limits
Default |
|
Setter | set_limit_drawing_enabled(value) |
Getter | is_limit_drawing_enabled() |
如果true
,在编辑器中绘制相机的极限矩形。
- bool editor_draw_screen
Default |
|
Setter | set_screen_drawing_enabled(value) |
Getter | is_screen_drawing_enabled() |
如果true
,在编辑器中绘制相机的画面矩形。
- int limit_bottom
Default |
|
Setter | set_limit(value) |
Getter | get_limit() |
以像素为单位的底部滚动限制。当达到这个值时,相机停止移动。
- int limit_left
Default |
|
Setter | set_limit(value) |
Getter | get_limit() |
以像素为单位的左滚动限制。当达到这个值时,相机停止移动。
- int limit_right
Default |
|
Setter | set_limit(value) |
Getter | get_limit() |
以像素为单位的右滚动限制。当达到这个值时,相机停止移动。
- bool limit_smoothed
Default |
|
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.
- int limit_top
Default |
|
Setter | set_limit(value) |
Getter | get_limit() |
以像素为单位的顶部滚动限制。达到此值时,相机停止移动。
- Vector2 offset
Default |
|
Setter | set_offset(value) |
Getter | get_offset() |
相机的偏移量,对于环顾四周或相机晃动动画非常有用。
- float offset_h
Default |
|
Setter | set_h_offset(value) |
Getter | get_h_offset() |
相机的水平偏移,相对于拖动边距。
注: 偏移量 H 仅用于强制执行相对于边距的偏移,如果启用拖动边距,它不会以任何方式更新,并可用于设置初始偏移量。如果启用了拖动边距,它不会以任何方式更新,可以用来设置初始偏移。
- float offset_v
Default |
|
Setter | set_v_offset(value) |
Getter | get_v_offset() |
相机相对于拖动边距的垂直偏移。
注: 与offset_h使用相同。
- Camera2DProcessMode process_mode
Default |
|
Setter | set_process_mode(value) |
Getter | get_process_mode() |
相机的过程回调。请参阅Camera2DProcessMode。
- bool rotating
Default |
|
Setter | set_rotating(value) |
Getter | is_rotating() |
If true
, the camera view rotates with the target.
- bool smoothing_enabled
Default |
|
Setter | set_enable_follow_smoothing(value) |
Getter | is_follow_smoothing_enabled() |
如果true
,相机以smoothing_speed的速度平滑地朝目标移动。
- float smoothing_speed
Default |
|
Setter | set_follow_smoothing(value) |
Getter | get_follow_smoothing() |
当smoothing_enabled为true
时,相机平滑效果的速度,以每秒像素为单位。
- Vector2 zoom
Default |
|
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_bottom,drag_margin_top,drag_margin_left和drag_margin_right。
返回指定的相机限制。请参阅 limit_bottom、limit_top、limit_left和limit_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
.
设置指定的边距。另请参阅 drag_margin_bottom、drag_margin_top、drag_margin_left和 drag_margin_right。
设置指定的相机限制。另请参阅 limit_bottom、limit_top、limit_left和limit_right。