Camera2D
Узел камеры для двумерных сцен.
Узел камеры для двумерных сцен.
Узел камеры для 2D-сцен. Он заставляет экран (текущий слой) прокручиваться вслед за этим узлом. Это упрощает (и ускоряет) программирование прокручиваемых сцен, чем ручное изменение положения узлов на основе CanvasItem.
Камеры регистрируются в ближайшем узле Viewport (при подъеме по дереву). Для каждого окна просмотра может быть активна только одна камера. Если при подъеме по дереву нет доступного окна просмотра, камера зарегистрируется в глобальном окне просмотра.
Этот узел предназначен для простого помощника, чтобы все работало быстро, но может потребоваться больше функциональности для изменения того, как работает камера. Чтобы создать свой собственный узел камеры, унаследуйте его от Entity2D и измените преобразование холста, установив Viewport.CanvasTransform в Viewport (вы можете получить текущий Viewport с помощью Entity.GetViewport).
Обратите внимание, что Entity2D.GlobalPosition узла Camera2D не отображает фактическое положение экрана, которое может отличаться из-за примененного сглаживания или ограничений по перемещению. Вы можете использовать Camera2D.GetScreenCenterPosition для получения реального положения. То же самое касается Entity2D.GlobalRotation узла, которое может отличаться из-за примененного сглаживания вращения. Вы можете использовать Camera2D.GetScreenRotation для получения текущего поворота экрана.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
Camera2DКонструктор
public Camera2D();Свойства28
AnchorModeСвойство
public Camera2D.AnchorModeEnum AnchorMode { get; set; }Точка привязки Camera2D.
CustomViewportСвойство
public Entity CustomViewport { get; set; }Пользовательский узел Viewport, прикрепленный к Camera2D. Если null или не является Viewport, вместо этого используется viewport по умолчанию.
DragBottomMarginСвойство
public float DragBottomMargin { get; set; }Нижнее поле, необходимое для перетаскивания камеры. Значение 1 заставляет камеру двигаться только при достижении нижнего края экрана.
DragHorizontalEnabledСвойство
public bool DragHorizontalEnabled { get; set; }Если true, камера движется только при достижении горизонтальных (левых и правых) границ перетаскивания. Если false, камера движется горизонтально независимо от границ.
DragHorizontalOffsetСвойство
public float DragHorizontalOffset { get; set; }Относительное горизонтальное смещение перетаскивания камеры между правым (-1) и левым (1) полями перетаскивания.
Примечание: Используется для установки начального горизонтального смещения перетаскивания; определения текущего смещения; или принудительного задания текущего смещения. Оно не обновляется автоматически, когда Camera2D.DragHorizontalEnabled имеет значение true или поля перетаскивания изменяются.
DragLeftMarginСвойство
public float DragLeftMargin { get; set; }Левое поле, необходимое для перетаскивания камеры. Значение 1 заставляет камеру двигаться только при достижении левого края экрана.
DragRightMarginСвойство
public float DragRightMargin { get; set; }Правое поле, необходимое для перетаскивания камеры. Значение 1 заставляет камеру двигаться только при достижении правого края экрана.
DragTopMarginСвойство
public float DragTopMargin { get; set; }Верхнее поле, необходимое для перемещения камеры. Значение 1 заставляет камеру двигаться только при достижении верхнего края экрана.
DragVerticalEnabledСвойство
public bool DragVerticalEnabled { get; set; }Если true, камера движется только при достижении вертикальных (верхних и нижних) границ перетаскивания. Если false, камера движется вертикально независимо от границ перетаскивания.
DragVerticalOffsetСвойство
public float DragVerticalOffset { get; set; }Относительное вертикальное смещение перетаскивания камеры между нижним (-1) и верхним (1) полями перетаскивания.
Примечание: Используется для установки начального вертикального смещения перетаскивания; определения текущего смещения; или принудительного задания текущего смещения. Оно не обновляется автоматически, когда Camera2D.DragVerticalEnabled имеет значение true или поля перетаскивания изменяются.
EditorDrawDragMarginСвойство
public bool EditorDrawDragMargin { get; set; }Если true, рисует прямоугольник перетаскиваемого поля камеры в редакторе.
EditorDrawLimitsСвойство
public bool EditorDrawLimits { get; set; }Если true, рисует прямоугольник границ камеры в редакторе.
EditorDrawScreenСвойство
public bool EditorDrawScreen { get; set; }Если true, рисует прямоугольник экрана камеры в редакторе.
EnabledСвойство
public bool Enabled { get; set; }Управляет тем, может ли камера быть активной или нет. Если true, Camera2D станет основной камерой, когда она войдет в дерево сцены и в данный момент нет активной камеры (см. Viewport.GetCamera2D).
Когда камера в данный момент активна и Camera2D.Enabled установлен на false, следующая включенная Camera2D в дереве сцены станет активной.
IgnoreRotationСвойство
public bool IgnoreRotation { get; set; }Если true, на визуализируемый вид камеры не влияют ее Entity2D.Rotation и Entity2D.GlobalRotation.
LimitBottomСвойство
public int LimitBottom { get; set; }Нижний предел прокрутки в пикселях. Камера останавливается при достижении этого значения, но Camera2D.Offset может вывести вид за пределы предела.
LimitEnabledСвойство
public bool LimitEnabled { get; set; }Если true, ограничения будут включены. Отключение этого позволит камере фокусироваться в любом месте, когда четыре свойства limit_* работать не будут.
LimitLeftСвойство
public int LimitLeft { get; set; }Предел прокрутки слева в пикселях. Камера останавливается при достижении этого значения, но Camera2D.Offset может вывести вид за пределы предела.
LimitRightСвойство
public int LimitRight { get; set; }Предел прокрутки вправо в пикселях. Камера останавливается при достижении этого значения, но Camera2D.Offset может вывести вид за пределы предела.
LimitSmoothedСвойство
public bool LimitSmoothed { get; set; }Если true, камера плавно останавливается при достижении своих пределов.
Это свойство не имеет эффекта, если Camera2D.PositionSmoothingEnabled равно false.
Примечание: Чтобы немедленно обновить положение камеры, чтобы оно находилось в пределах ограничений без сглаживания, даже если эта настройка включена, вызовите Camera2D.ResetSmoothing.
LimitTopСвойство
public int LimitTop { get; set; }Верхний предел прокрутки в пикселях. Камера останавливается при достижении этого значения, но Camera2D.Offset может вывести вид за пределы предела.
OffsetСвойство
public Vector2 Offset { get; set; }Относительное смещение камеры. Полезно для осмотра или анимации дрожания камеры. Смещенная камера может выходить за пределы, определенные в Camera2D.LimitTop, Camera2D.LimitBottom, Camera2D.LimitLeft и Camera2D.LimitRight.
PositionSmoothingEnabledСвойство
public bool PositionSmoothingEnabled { get; set; }Если true, вид камеры плавно перемещается к целевой позиции со скоростью Camera2D.PositionSmoothingSpeed.
PositionSmoothingSpeedСвойство
public float PositionSmoothingSpeed { get; set; }Скорость эффекта сглаживания камеры в пикселях в секунду, когда Camera2D.PositionSmoothingEnabled имеет значение true.
ProcessCallbackСвойство
public Camera2D.Camera2DProcessCallback ProcessCallback { get; set; }Обратный вызов процесса камеры.
RotationSmoothingEnabledСвойство
public bool RotationSmoothingEnabled { get; set; }Если true, вид камеры плавно вращается с помощью асимптотического сглаживания, чтобы совпасть с целевым вращением на Camera2D.RotationSmoothingSpeed.
Примечание: Это свойство не имеет эффекта, если Camera2D.IgnoreRotation равно true.
RotationSmoothingSpeedСвойство
public float RotationSmoothingSpeed { get; set; }Угловая асимптотическая скорость эффекта сглаживания вращения камеры, когда Camera2D.RotationSmoothingEnabled имеет значение true.
ZoomСвойство
public Vector2 Zoom { get; set; }Масштаб камеры. Более высокие значения соответствуют большему масштабу. Например, масштаб Vector2(2.0, 2.0) будет вдвое больше по каждой оси (область обзора в четыре раза меньше). Напротив, масштаб Vector2(0.5, 0.5) будет вдвое меньше по каждой оси (область обзора в четыре раза больше). Компоненты X и Y, как правило, всегда должны иметь одинаковое значение, если только вы не хотите растянуть поле обзора камеры.
Примечание: FontFile.Oversampling не учитывает масштаб Camera2D. Это означает, что увеличение/уменьшение масштаба приведёт к размытию или пикселизации растровых и растровых (не MSDF) динамических шрифтов, если только шрифт не является частью CanvasLayer, который игнорирует масштаб камеры. Чтобы текст оставался чётким независимо от масштаба, можно включить отображение шрифтов MSDF, включив ProjectSettings.gui/theme/default_font_multichannel_signed_distance_field (применяется только к шрифту проекта по умолчанию) или включив Мультиканальное поле в параметрах импорта DynamicFont для пользовательских шрифтов. Для системных шрифтов SystemFont.MultichannelSignedDistanceField можно включить в инспекторе.
Методы52
Alignvoid
public void Align();Выравнивает камеру по отслеживаемому узлу.
Примечание: Вызов Camera2D.ForceUpdateScroll после этого метода не требуется.
ForceUpdateScrollvoid
public void ForceUpdateScroll();Заставляет камеру немедленно обновить прокрутку.
GetAnchorModeCamera2D.AnchorModeEnum
public Camera2D.AnchorModeEnum GetAnchorMode();Camera2D.AnchorModeEnumGetCustomViewportEntity
public Entity GetCustomViewport();EntityGetDragHorizontalOffsetfloat
public float GetDragHorizontalOffset();floatGetDragMarginfloat
public float GetDragMargin(Side margin);Возвращает указанное поле Side. См. также Camera2D.DragBottomMargin, Camera2D.DragTopMargin, Camera2D.DragLeftMargin и Camera2D.DragRightMargin.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
floatGetDragVerticalOffsetfloat
public float GetDragVerticalOffset();floatGetLimitint
public int GetLimit(Side margin);Возвращает лимит камеры для указанного Side. См. также Camera2D.LimitBottom, Camera2D.LimitTop, Camera2D.LimitLeft и Camera2D.LimitRight.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
intGetOffsetVector2
public Vector2 GetOffset();Vector2GetPositionSmoothingSpeedfloat
public float GetPositionSmoothingSpeed();floatGetProcessCallbackCamera2D.Camera2DProcessCallback
public Camera2D.Camera2DProcessCallback GetProcessCallback();Camera2D.Camera2DProcessCallbackGetRotationSmoothingSpeedfloat
public float GetRotationSmoothingSpeed();floatGetScreenCenterPositionVector2
public Vector2 GetScreenCenterPosition();Возвращает центр экрана с точки зрения этой камеры в глобальных координатах.
Примечание: Точное целевое положение камеры может отличаться. См. Camera2D.GetTargetPosition.
Vector2GetScreenRotationfloat
public float GetScreenRotation();Возвращает текущий поворот экрана с точки зрения этой камеры.
Примечание: Поворот экрана может отличаться от Entity2D.GlobalRotation, если камера вращается плавно из-за Camera2D.RotationSmoothingEnabled.
floatGetTargetPositionVector2
public Vector2 GetTargetPosition();Возвращает целевое положение этой камеры в глобальных координатах.
Примечание: Возвращаемое значение не совпадает с Entity2D.GlobalPosition, так как на него влияют свойства перетаскивания. Оно также не совпадает с текущим положением, если Camera2D.PositionSmoothingEnabled равно true (см. Camera2D.GetScreenCenterPosition).
Vector2GetZoomVector2
public Vector2 GetZoom();Vector2IsCurrentbool
public bool IsCurrent();Возвращает true, если эта Camera2D является активной камерой (см. Viewport.GetCamera2D).
boolIsDragHorizontalEnabledbool
public bool IsDragHorizontalEnabled();boolIsDragVerticalEnabledbool
public bool IsDragVerticalEnabled();boolIsEnabledbool
public bool IsEnabled();boolIsIgnoringRotationbool
public bool IsIgnoringRotation();boolIsLimitDrawingEnabledbool
public bool IsLimitDrawingEnabled();boolIsLimitEnabledbool
public bool IsLimitEnabled();boolIsLimitSmoothingEnabledbool
public bool IsLimitSmoothingEnabled();boolIsMarginDrawingEnabledbool
public bool IsMarginDrawingEnabled();boolIsPositionSmoothingEnabledbool
public bool IsPositionSmoothingEnabled();boolIsRotationSmoothingEnabledbool
public bool IsRotationSmoothingEnabled();boolIsScreenDrawingEnabledbool
public bool IsScreenDrawingEnabled();boolMakeCurrentvoid
public void MakeCurrent();Делает Camera2D текущей активной камерой. Camera2D.Enabled должно быть true.
ResetSmoothingvoid
public void ResetSmoothing();Устанавливает положение камеры немедленно в текущее место назначения сглаживания.
Этот метод не имеет эффекта, если Camera2D.PositionSmoothingEnabled имеет значение false.
SetAnchorModevoid
public void SetAnchorMode(Camera2D.AnchorModeEnum anchorMode);| Имя | Тип | По умолчанию |
|---|---|---|
anchorMode | Camera2D.AnchorModeEnum | — |
SetCustomViewportvoid
public void SetCustomViewport(Entity viewport);| Имя | Тип | По умолчанию |
|---|---|---|
viewport | Entity | — |
SetDragHorizontalEnabledvoid
public void SetDragHorizontalEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetDragHorizontalOffsetvoid
public void SetDragHorizontalOffset(float offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | float | — |
SetDragMarginvoid
public void SetDragMargin(Side margin, float dragMargin);Устанавливает указанное поле Side. См. также Camera2D.DragBottomMargin, Camera2D.DragTopMargin, Camera2D.DragLeftMargin и Camera2D.DragRightMargin.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
dragMargin | float | — |
SetDragVerticalEnabledvoid
public void SetDragVerticalEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetDragVerticalOffsetvoid
public void SetDragVerticalOffset(float offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | float | — |
SetEnabledvoid
public void SetEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetIgnoreRotationvoid
public void SetIgnoreRotation(bool ignore);| Имя | Тип | По умолчанию |
|---|---|---|
ignore | bool | — |
SetLimitvoid
public void SetLimit(Side margin, int limit);Устанавливает ограничение камеры для указанного Side. См. также Camera2D.LimitBottom, Camera2D.LimitTop, Camera2D.LimitLeft и Camera2D.LimitRight.
| Имя | Тип | По умолчанию |
|---|---|---|
margin | Side | — |
limit | int | — |
SetLimitDrawingEnabledvoid
public void SetLimitDrawingEnabled(bool limitDrawingEnabled);| Имя | Тип | По умолчанию |
|---|---|---|
limitDrawingEnabled | bool | — |
SetLimitEnabledvoid
public void SetLimitEnabled(bool limitEnabled);| Имя | Тип | По умолчанию |
|---|---|---|
limitEnabled | bool | — |
SetLimitSmoothingEnabledvoid
public void SetLimitSmoothingEnabled(bool limitSmoothingEnabled);| Имя | Тип | По умолчанию |
|---|---|---|
limitSmoothingEnabled | bool | — |
SetMarginDrawingEnabledvoid
public void SetMarginDrawingEnabled(bool marginDrawingEnabled);| Имя | Тип | По умолчанию |
|---|---|---|
marginDrawingEnabled | bool | — |
SetOffsetvoid
public void SetOffset(Vector2 offset);| Имя | Тип | По умолчанию |
|---|---|---|
offset | Vector2 | — |
SetPositionSmoothingEnabledvoid
public void SetPositionSmoothingEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetPositionSmoothingSpeedvoid
public void SetPositionSmoothingSpeed(float positionSmoothingSpeed);| Имя | Тип | По умолчанию |
|---|---|---|
positionSmoothingSpeed | float | — |
SetProcessCallbackvoid
public void SetProcessCallback(Camera2D.Camera2DProcessCallback mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | Camera2D.Camera2DProcessCallback | — |
SetRotationSmoothingEnabledvoid
public void SetRotationSmoothingEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetRotationSmoothingSpeedvoid
public void SetRotationSmoothingSpeed(float speed);| Имя | Тип | По умолчанию |
|---|---|---|
speed | float | — |
SetScreenDrawingEnabledvoid
public void SetScreenDrawingEnabled(bool screenDrawingEnabled);| Имя | Тип | По умолчанию |
|---|---|---|
screenDrawingEnabled | bool | — |
SetZoomvoid
public void SetZoom(Vector2 zoom);| Имя | Тип | По умолчанию |
|---|---|---|
zoom | Vector2 | — |
Camera2D.AnchorModeEnum
| Значение | Описание |
|---|---|
DragCenter = 1 | Положение камеры учитывает вертикальное/горизонтальное смещение и размер экрана. |
FixedTopLeft = 0 | Положение камеры фиксировано таким образом, что верхний левый угол всегда находится в начале координат. |
Camera2D.Camera2DProcessCallback
| Значение | Описание |
|---|---|
Idle = 1 | Камера обновляется во время обработки кадров (см. |
Physics = 0 | Камера обновляется во время физических кадров (см. |