reckfellENGINE

Area2D

Зона обнаружения и локального физического поля.

На этой странице
class Area2DReckfellSharpНаследует CollisionObject2D

Area2D обнаруживает тела/зоны и может менять гравитацию, сопротивление и аудиошину. Она не становится твёрдой стеной. Её Mask проверяет Layer цели; для наблюдения нужны Monitoring и активная форма.

Monitorable разрешает другим зонам обнаруживать эту зону и не заменяет Monitoring. Списки пересечений обновляются на физических шагах. В сигналах входа/выхода сначала задайте флаг обработанного действия, затем отложите отключение Monitoring/формы. Нулевая гравитация не обнуляет набранную скорость.

Руководство и пример.

Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.

Конструкторы1

Area2DКонструктор
# Area2D
C#
public Area2D();

Свойства15

AngularDampСвойство
# AngularDamp
C#
public float AngularDamp { get; set; }

Скорость, с которой объекты прекращают вращаться в этой области. Представляет угловую скорость, потерянную в секунду. Подробнее о затухании см. ProjectSettings.physics/2d/default_angular_damp.

AngularDampSpaceOverrideСвойство
# AngularDampSpaceOverride
C#
public Area2D.SpaceOverride AngularDampSpaceOverride { get; set; }

Режим переопределения для расчетов углового демпфирования в этой области.

AudioBusNameСвойство
# AudioBusName
C#
public StringName AudioBusName { get; set; }

Название аудио-шины этой области.

AudioBusOverrideСвойство
# AudioBusOverride
C#
public bool AudioBusOverride { get; set; }

Если true, аудиошина области переопределяет аудиошину по умолчанию.

GravityСвойство
# Gravity
C#
public float Gravity { get; set; }

Интенсивность гравитации области (в пикселях в секунду в квадрате). Это значение умножает направление гравитации. Это полезно для изменения силы гравитации без изменения ее направления.

GravityDirectionСвойство
# GravityDirection
C#
public Vector2 GravityDirection { get; set; }

Вектор силы тяжести области (не нормализован).

GravityPointСвойство
# GravityPoint
C#
public bool GravityPoint { get; set; }

Если true, гравитация рассчитывается из точки (задается через Area2D.GravityPointCenter). См. также Area2D.GravitySpaceOverride.

GravityPointCenterСвойство
# GravityPointCenter
C#
public Vector2 GravityPointCenter { get; set; }

Если гравитация - это точка (см. Area2D.GravityPoint), в этом и будет точка притяжения.

GravityPointUnitDistanceСвойство
# GravityPointUnitDistance
C#
public float GravityPointUnitDistance { get; set; }

Расстояние, на котором сила тяжести равна Area2D.Gravity. Например, на планете 100 пикселей в радиусе с поверхностной гравитацией 4,0 px/s2 установить Area2D.Gravity Таким образом, в примере при 200 пикселях от центра гравитация будет составлять 1,0 px/s2 (дважды расстояние, 1/4-я гравитация), при 50 пикселях она будет 16,0 px/s2 (полная дистанция, 4× гравитация) и т.д. Вышеизложенное справедливо только в том случае, если единичное расстояние является положительным числом.

GravitySpaceOverrideСвойство
# GravitySpaceOverride
C#
public Area2D.SpaceOverride GravitySpaceOverride { get; set; }

Определяет способ совмещения гравитации зоны с другими полями/миром. Gravity = 0 при Disabled не включает невесомость; для замены используйте соответствующий override-режим.

LinearDampСвойство
# LinearDamp
C#
public float LinearDamp { get; set; }

Скорость, с которой объекты прекращают движение в этой области. Представляет собой потерю линейной скорости в секунду. Подробнее о затухании см. ProjectSettings.physics/2d/default_linear_damp.

LinearDampSpaceOverrideСвойство
# LinearDampSpaceOverride
C#
public Area2D.SpaceOverride LinearDampSpaceOverride { get; set; }

Режим переопределения для расчетов линейного затухания в этой области.

MonitorableСвойство
# Monitorable
C#
public bool Monitorable { get; set; }

Разрешает другим наблюдающим зонам обнаруживать эту Area2D. Не включает её собственное Monitoring. В заблокированном физическом callback откладывайте изменение.

MonitoringСвойство
# Monitoring
C#
public bool Monitoring { get; set; }

Включает обнаружение тел и областей этой зоной. Не равно Monitorable. В обработчике входа/выхода меняйте через SetDeferred, поскольку прямое изменение заблокировано во время уведомления.

PriorityСвойство
# Priority
C#
public int Priority { get; set; }

Приоритет области. Области с более высоким приоритетом обрабатываются в первую очередь. Физика World2D всегда обрабатывается в последнюю очередь, после всех областей.

Методы36

GetAngularDampfloat
# GetAngularDamp
C#
public float GetAngularDamp();
Возвращает float
GetAngularDampSpaceOverrideModeArea2D.SpaceOverride
# GetAngularDampSpaceOverrideMode
C#
public Area2D.SpaceOverride GetAngularDampSpaceOverrideMode();
Возвращает Area2D.SpaceOverride
GetAudioBusNameStringName
# GetAudioBusName
C#
public StringName GetAudioBusName();
Возвращает StringName
GetGravityfloat
# GetGravity
C#
public float GetGravity();
Возвращает float
GetGravityDirectionVector2
# GetGravityDirection
C#
public Vector2 GetGravityDirection();
Возвращает Vector2
GetGravityPointCenterVector2
# GetGravityPointCenter
C#
public Vector2 GetGravityPointCenter();
Возвращает Vector2
GetGravityPointUnitDistancefloat
# GetGravityPointUnitDistance
C#
public float GetGravityPointUnitDistance();
Возвращает float
GetGravitySpaceOverrideModeArea2D.SpaceOverride
# GetGravitySpaceOverrideMode
C#
public Area2D.SpaceOverride GetGravitySpaceOverrideMode();
Возвращает Area2D.SpaceOverride
GetLinearDampfloat
# GetLinearDamp
C#
public float GetLinearDamp();
Возвращает float
GetLinearDampSpaceOverrideModeArea2D.SpaceOverride
# GetLinearDampSpaceOverrideMode
C#
public Area2D.SpaceOverride GetLinearDampSpaceOverrideMode();
Возвращает Area2D.SpaceOverride
GetOverlappingAreasReckfell.Collections.Array<Area2D>
# GetOverlappingAreas
C#
public Reckfell.Collections.Array<Area2D> GetOverlappingAreas();

Возвращает список пересекающихся Area2Ds. Совпадающая область CollisionObject2D.CollisionLayer Должно быть, часть этой области. CollisionObject2D.CollisionMask для обнаружения. По причинам функционирования (все слияния обрабатываются одновременно) этот список модифицируется один раз на этапе физики, а не сразу после перемещения объектов.

Возвращает Reckfell.Collections.Array<Area2D>
GetOverlappingBodiesReckfell.Collections.Array<Entity2D>
# GetOverlappingBodies
C#
public Reckfell.Collections.Array<Entity2D> GetOverlappingBodies();

Возвращает обнаруженные тела из обновлённого физикой состояния. Сразу после перемещения или добавления формы список может быть прежним. Требует Monitoring=true; для реакции на вход используйте сигнал BodyEntered.

Возвращает Reckfell.Collections.Array<Entity2D>

Массив Entity2D текущих обнаруженных тел. Пустой массив возможен при отсутствии пересечений; при выключенном Monitoring метод сообщает ошибку и тоже возвращает пустой массив.

GetPriorityint
# GetPriority
C#
public int GetPriority();
Возвращает int
HasOverlappingAreasbool
# HasOverlappingAreas
C#
public bool HasOverlappingAreas();

Returns (Возврат) true если пересекается какая-либо Area2Ds, в остальном false. Совпадающая область CollisionObject2D.CollisionLayer Должно быть, часть этой области. CollisionObject2D.CollisionMask для обнаружения. По причинам эффективности (все слияния обрабатываются одновременно) список перекрывающихся участков изменяется один раз на этапе физики, а не сразу после перемещения объектов.

Возвращает bool
HasOverlappingBodiesbool
# HasOverlappingBodies
C#
public bool HasOverlappingBodies();

Returns (Возврат) true если пересекается какая-либо PhysicsBody2DS или TileMaps, в остальном false. Совпадающий орган CollisionObject2D.CollisionLayer Должно быть, часть этой области. CollisionObject2D.CollisionMask для обнаружения. По причинам производительности (слияния обрабатываются одновременно) список совпадающих тел изменяется один раз на этапе физики, а не сразу после перемещения объектов.

Возвращает bool
IsGravityAPointbool
# IsGravityAPoint
C#
public bool IsGravityAPoint();
Возвращает bool
IsMonitorablebool
# IsMonitorable
C#
public bool IsMonitorable();
Возвращает bool
IsMonitoringbool
# IsMonitoring
C#
public bool IsMonitoring();
Возвращает bool
IsOverridingAudioBusbool
# IsOverridingAudioBus
C#
public bool IsOverridingAudioBus();
Возвращает bool
OverlapsAreabool
# OverlapsArea
C#
public bool OverlapsArea(Entity area);

Возвращает true, если заданная Area2D пересекает или перекрывает эту Area2D, false в противном случае. Примечание: Результат этого теста не появляется сразу после перемещения объектов. Для производительности список перекрытий обновляется один раз за кадр и перед шагом физики. Рассмотрите возможность использования сигналов вместо этого.

Параметры
ИмяТипПо умолчанию
areaEntity—
Возвращает bool
OverlapsBodybool
# OverlapsBody
C#
public bool OverlapsBody(Entity body);

Returns (Возврат) true если данное тело физики пересекается или пересекается Area2D, false иначе. Примечание: Результат этого испытания не сразу же после перемещения объектов. Для выполнения задач список совпадений обновляется один раз на кадр и до этапа физики. Рассматривайте вместо этого использование сигналов. :: body спор может быть либо PhysicsBody2D или a TileMap В то время как TileMaps сами по себе не являются физическими телами, они регистрируют свою плитку в форме столкновения как виртуальное тело физики.

Параметры
ИмяТипПо умолчанию
bodyEntity—
Возвращает bool
SetAngularDampvoid
# SetAngularDamp
C#
public void SetAngularDamp(float angularDamp);
Параметры
ИмяТипПо умолчанию
angularDampfloat—
SetAngularDampSpaceOverrideModevoid
# SetAngularDampSpaceOverrideMode
C#
public void SetAngularDampSpaceOverrideMode(Area2D.SpaceOverride spaceOverrideMode);
Параметры
ИмяТипПо умолчанию
spaceOverrideModeArea2D.SpaceOverride—
SetAudioBusNamevoid
# SetAudioBusName
C#
public void SetAudioBusName(StringName name);
Параметры
ИмяТипПо умолчанию
nameStringName—
SetAudioBusOverridevoid
# SetAudioBusOverride
C#
public void SetAudioBusOverride(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetGravityvoid
# SetGravity
C#
public void SetGravity(float gravity);
Параметры
ИмяТипПо умолчанию
gravityfloat—
SetGravityDirectionvoid
# SetGravityDirection
C#
public void SetGravityDirection(Vector2 direction);
Параметры
ИмяТипПо умолчанию
directionVector2—
SetGravityIsPointvoid
# SetGravityIsPoint
C#
public void SetGravityIsPoint(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetGravityPointCentervoid
# SetGravityPointCenter
C#
public void SetGravityPointCenter(Vector2 center);
Параметры
ИмяТипПо умолчанию
centerVector2—
SetGravityPointUnitDistancevoid
# SetGravityPointUnitDistance
C#
public void SetGravityPointUnitDistance(float distanceScale);
Параметры
ИмяТипПо умолчанию
distanceScalefloat—
SetGravitySpaceOverrideModevoid
# SetGravitySpaceOverrideMode
C#
public void SetGravitySpaceOverrideMode(Area2D.SpaceOverride spaceOverrideMode);
Параметры
ИмяТипПо умолчанию
spaceOverrideModeArea2D.SpaceOverride—
SetLinearDampvoid
# SetLinearDamp
C#
public void SetLinearDamp(float linearDamp);
Параметры
ИмяТипПо умолчанию
linearDampfloat—
SetLinearDampSpaceOverrideModevoid
# SetLinearDampSpaceOverrideMode
C#
public void SetLinearDampSpaceOverrideMode(Area2D.SpaceOverride spaceOverrideMode);
Параметры
ИмяТипПо умолчанию
spaceOverrideModeArea2D.SpaceOverride—
SetMonitorablevoid
# SetMonitorable
C#
public void SetMonitorable(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetMonitoringvoid
# SetMonitoring
C#
public void SetMonitoring(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetPriorityvoid
# SetPriority
C#
public void SetPriority(int priority);
Параметры
ИмяТипПо умолчанию
priorityint—

Сигналы и события8

AreaEnteredСобытие
# AreaEntered
C#
public event Area2D.AreaEnteredEventHandler AreaEntered;

Выдается, когда полученный area входит в эту область. Требуется, чтобы Area2D.Monitoring был установлен в true.

Параметры обработчика
ИмяТипПо умолчанию
areaArea2D—
AreaExitedСобытие
# AreaExited
C#
public event Area2D.AreaExitedEventHandler AreaExited;

Выдается, когда полученная area выходит из этой области. Требует, чтобы Area2D.Monitoring был установлен на true.

Параметры обработчика
ИмяТипПо умолчанию
areaArea2D—
AreaShapeEnteredСобытие
# AreaShapeEntered
C#
public event Area2D.AreaShapeEnteredEventHandler AreaShapeEntered;

Выдается, когда Shape2D полученного area входит в форму этой области. Требует, чтобы Area2D.Monitoring был установлен в true. local_shape_index и area_shape_index содержат индексы взаимодействующих фигур из этой области и другой области соответственно. area_rid содержит Rid другой области. Эти значения можно использовать с PhysicsServer2D. Пример: Получить узел CollisionShape2D из индекса формы:

Параметры обработчика
ИмяТипПо умолчанию
areaRidRid—
areaArea2D—
areaShapeIndexlong—
localShapeIndexlong—
AreaShapeExitedСобытие
# AreaShapeExited
C#
public event Area2D.AreaShapeExitedEventHandler AreaShapeExited;

Выдается, когда Shape2D полученной area выходит из формы этой области. Требует, чтобы Area2D.Monitoring был установлен на true. См. также Area2D.AreaShapeEntered.

Параметры обработчика
ИмяТипПо умолчанию
areaRidRid—
areaArea2D—
areaShapeIndexlong—
localShapeIndexlong—
BodyEnteredСобытие
# BodyEntered
C#
public event Area2D.BodyEnteredEventHandler BodyEntered;

Вызывается, когда полученное body попадает в эту область. body может быть PhysicsBody2D или TileMap. TileMap обнаруживаются, если их TileSet имеет настроенные формы столкновений. Требует, чтобы Area2D.Monitoring был установлен на true.

Параметры обработчика
ИмяТипПо умолчанию
bodyEntity2D—
BodyExitedСобытие
# BodyExited
C#
public event Area2D.BodyExitedEventHandler BodyExited;

Вызывается, когда полученное body покидает эту область. body может быть PhysicsBody2D или TileMap. TileMap обнаруживаются, если их TileSet имеет настроенные формы столкновений. Требует, чтобы Area2D.Monitoring был установлен на true.

Параметры обработчика
ИмяТипПо умолчанию
bodyEntity2D—
BodyShapeEnteredСобытие
# BodyShapeEntered
C#
public event Area2D.BodyShapeEnteredEventHandler BodyShapeEntered;

Вызывается, когда Shape2D полученного body входит в форму этой области. body может быть PhysicsBody2D или TileMap. TileMap обнаруживаются, если их TileSet имеет настроенные формы столкновений. Требует, чтобы Area2D.Monitoring был установлен на true. local_shape_index и body_shape_index содержат индексы взаимодействующих фигур из этой области и взаимодействующего тела соответственно. body_rid содержит Rid тела. Эти значения можно использовать с PhysicsServer2D. Пример: Получить узел CollisionShape2D из индекса формы:

Параметры обработчика
ИмяТипПо умолчанию
bodyRidRid—
bodyEntity2D—
bodyShapeIndexlong—
localShapeIndexlong—
BodyShapeExitedСобытие
# BodyShapeExited
C#
public event Area2D.BodyShapeExitedEventHandler BodyShapeExited;

Выдается, когда Shape2D полученного body выходит из формы этой области. body может быть PhysicsBody2D или TileMap. TileMap обнаруживаются, если их TileSet имеет настроенные формы столкновений. Требует, чтобы Area2D.Monitoring был установлен на true. См. также Area2D.BodyShapeEntered.

Параметры обработчика
ИмяТипПо умолчанию
bodyRidRid—
bodyEntity2D—
bodyShapeIndexlong—
localShapeIndexlong—

Area2D.SpaceOverride

ЗначениеОписание
Combine = 1

Эта область добавляет свои значения гравитации/затухания ко всему, что было рассчитано до сих пор (в порядке Area2D.Priority).

CombineReplace = 2

Эта область добавляет свои значения гравитации/демпфирования ко всему, что было рассчитано до сих пор (в порядке Area2D.Priority), игнорируя любые области с более низким приоритетом.

Disabled = 0

Эта область не влияет на гравитацию/демпфирование.

Replace = 3

Эта область заменяет любую гравитацию/демпфирование, даже значения по умолчанию, игнорируя любые области с более низким приоритетом.

ReplaceCombine = 4

Эта область заменяет все рассчитанные до сих пор значения гравитации/демпфирования (в порядке Area2D.Priority), но продолжает рассчитывать остальные области.

Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

Вход в аккаунт

Войдите в аккаунт Reckfell.

Один аккаунт для всей платформы Reckfell.