Area2D
Зона обнаружения и локального физического поля.
Area2D обнаруживает тела/зоны и может менять гравитацию, сопротивление и аудиошину. Она не становится твёрдой стеной. Её Mask проверяет Layer цели; для наблюдения нужны Monitoring и активная форма.
Monitorable разрешает другим зонам обнаруживать эту зону и не заменяет Monitoring. Списки пересечений обновляются на физических шагах. В сигналах входа/выхода сначала задайте флаг обработанного действия, затем отложите отключение Monitoring/формы. Нулевая гравитация не обнуляет набранную скорость.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
Area2DКонструктор
public Area2D();Свойства15
AngularDampСвойство
public float AngularDamp { get; set; }Скорость, с которой объекты прекращают вращаться в этой области. Представляет угловую скорость, потерянную в секунду.
Подробнее о затухании см. ProjectSettings.physics/2d/default_angular_damp.
AngularDampSpaceOverrideСвойство
public Area2D.SpaceOverride AngularDampSpaceOverride { get; set; }Режим переопределения для расчетов углового демпфирования в этой области.
AudioBusNameСвойство
public StringName AudioBusName { get; set; }Название аудио-шины этой области.
AudioBusOverrideСвойство
public bool AudioBusOverride { get; set; }Если true, аудиошина области переопределяет аудиошину по умолчанию.
GravityСвойство
public float Gravity { get; set; }Интенсивность гравитации области (в пикселях в секунду в квадрате). Это значение умножает направление гравитации. Это полезно для изменения силы гравитации без изменения ее направления.
GravityDirectionСвойство
public Vector2 GravityDirection { get; set; }Вектор силы тяжести области (не нормализован).
GravityPointСвойство
public bool GravityPoint { get; set; }Если true, гравитация рассчитывается из точки (задается через Area2D.GravityPointCenter). См. также Area2D.GravitySpaceOverride.
GravityPointCenterСвойство
public Vector2 GravityPointCenter { get; set; }Если гравитация - это точка (см. Area2D.GravityPoint), в этом и будет точка притяжения.
GravityPointUnitDistanceСвойство
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Свойство
public Area2D.SpaceOverride GravitySpaceOverride { get; set; }Определяет способ совмещения гравитации зоны с другими полями/миром. Gravity = 0 при Disabled не включает невесомость; для замены используйте соответствующий override-режим.
LinearDampСвойство
public float LinearDamp { get; set; }Скорость, с которой объекты прекращают движение в этой области. Представляет собой потерю линейной скорости в секунду.
Подробнее о затухании см. ProjectSettings.physics/2d/default_linear_damp.
LinearDampSpaceOverrideСвойство
public Area2D.SpaceOverride LinearDampSpaceOverride { get; set; }Режим переопределения для расчетов линейного затухания в этой области.
MonitorableСвойство
public bool Monitorable { get; set; }Разрешает другим наблюдающим зонам обнаруживать эту Area2D. Не включает её собственное Monitoring. В заблокированном физическом callback откладывайте изменение.
MonitoringСвойство
public bool Monitoring { get; set; }Включает обнаружение тел и областей этой зоной. Не равно Monitorable. В обработчике входа/выхода меняйте через SetDeferred, поскольку прямое изменение заблокировано во время уведомления.
PriorityСвойство
public int Priority { get; set; }Приоритет области. Области с более высоким приоритетом обрабатываются в первую очередь. Физика World2D всегда обрабатывается в последнюю очередь, после всех областей.
Методы36
GetAngularDampfloat
public float GetAngularDamp();floatGetAngularDampSpaceOverrideModeArea2D.SpaceOverride
public Area2D.SpaceOverride GetAngularDampSpaceOverrideMode();Area2D.SpaceOverrideGetAudioBusNameStringName
public StringName GetAudioBusName();StringNameGetGravityfloat
public float GetGravity();floatGetGravityDirectionVector2
public Vector2 GetGravityDirection();Vector2GetGravityPointCenterVector2
public Vector2 GetGravityPointCenter();Vector2GetGravityPointUnitDistancefloat
public float GetGravityPointUnitDistance();floatGetGravitySpaceOverrideModeArea2D.SpaceOverride
public Area2D.SpaceOverride GetGravitySpaceOverrideMode();Area2D.SpaceOverrideGetLinearDampfloat
public float GetLinearDamp();floatGetLinearDampSpaceOverrideModeArea2D.SpaceOverride
public Area2D.SpaceOverride GetLinearDampSpaceOverrideMode();Area2D.SpaceOverrideGetOverlappingAreasReckfell.Collections.Array<Area2D>
public Reckfell.Collections.Array<Area2D> GetOverlappingAreas();Возвращает список пересекающихся Area2Ds. Совпадающая область CollisionObject2D.CollisionLayer Должно быть, часть этой области. CollisionObject2D.CollisionMask для обнаружения.
По причинам функционирования (все слияния обрабатываются одновременно) этот список модифицируется один раз на этапе физики, а не сразу после перемещения объектов.
Reckfell.Collections.Array<Area2D>GetOverlappingBodiesReckfell.Collections.Array<Entity2D>
public Reckfell.Collections.Array<Entity2D> GetOverlappingBodies();Возвращает обнаруженные тела из обновлённого физикой состояния. Сразу после перемещения или добавления формы список может быть прежним. Требует Monitoring=true; для реакции на вход используйте сигнал BodyEntered.
Reckfell.Collections.Array<Entity2D>Массив Entity2D текущих обнаруженных тел. Пустой массив возможен при отсутствии пересечений; при выключенном Monitoring метод сообщает ошибку и тоже возвращает пустой массив.
GetPriorityint
public int GetPriority();intHasOverlappingAreasbool
public bool HasOverlappingAreas();Returns (Возврат) true если пересекается какая-либо Area2Ds, в остальном false. Совпадающая область CollisionObject2D.CollisionLayer Должно быть, часть этой области. CollisionObject2D.CollisionMask для обнаружения.
По причинам эффективности (все слияния обрабатываются одновременно) список перекрывающихся участков изменяется один раз на этапе физики, а не сразу после перемещения объектов.
boolHasOverlappingBodiesbool
public bool HasOverlappingBodies();Returns (Возврат) true если пересекается какая-либо PhysicsBody2DS или TileMaps, в остальном false. Совпадающий орган CollisionObject2D.CollisionLayer Должно быть, часть этой области. CollisionObject2D.CollisionMask для обнаружения.
По причинам производительности (слияния обрабатываются одновременно) список совпадающих тел изменяется один раз на этапе физики, а не сразу после перемещения объектов.
boolIsGravityAPointbool
public bool IsGravityAPoint();boolIsMonitorablebool
public bool IsMonitorable();boolIsMonitoringbool
public bool IsMonitoring();boolIsOverridingAudioBusbool
public bool IsOverridingAudioBus();boolOverlapsAreabool
public bool OverlapsArea(Entity area);Возвращает true, если заданная Area2D пересекает или перекрывает эту Area2D, false в противном случае.
Примечание: Результат этого теста не появляется сразу после перемещения объектов. Для производительности список перекрытий обновляется один раз за кадр и перед шагом физики. Рассмотрите возможность использования сигналов вместо этого.
| Имя | Тип | По умолчанию |
|---|---|---|
area | Entity | — |
boolOverlapsBodybool
public bool OverlapsBody(Entity body);Returns (Возврат) true если данное тело физики пересекается или пересекается Area2D, false иначе.
Примечание: Результат этого испытания не сразу же после перемещения объектов. Для выполнения задач список совпадений обновляется один раз на кадр и до этапа физики. Рассматривайте вместо этого использование сигналов.
:: body спор может быть либо PhysicsBody2D или a TileMap В то время как TileMaps сами по себе не являются физическими телами, они регистрируют свою плитку в форме столкновения как виртуальное тело физики.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity | — |
boolSetAngularDampvoid
public void SetAngularDamp(float angularDamp);| Имя | Тип | По умолчанию |
|---|---|---|
angularDamp | float | — |
SetAngularDampSpaceOverrideModevoid
public void SetAngularDampSpaceOverrideMode(Area2D.SpaceOverride spaceOverrideMode);| Имя | Тип | По умолчанию |
|---|---|---|
spaceOverrideMode | Area2D.SpaceOverride | — |
SetAudioBusNamevoid
public void SetAudioBusName(StringName name);| Имя | Тип | По умолчанию |
|---|---|---|
name | StringName | — |
SetAudioBusOverridevoid
public void SetAudioBusOverride(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetGravityvoid
public void SetGravity(float gravity);| Имя | Тип | По умолчанию |
|---|---|---|
gravity | float | — |
SetGravityDirectionvoid
public void SetGravityDirection(Vector2 direction);| Имя | Тип | По умолчанию |
|---|---|---|
direction | Vector2 | — |
SetGravityIsPointvoid
public void SetGravityIsPoint(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetGravityPointCentervoid
public void SetGravityPointCenter(Vector2 center);| Имя | Тип | По умолчанию |
|---|---|---|
center | Vector2 | — |
SetGravityPointUnitDistancevoid
public void SetGravityPointUnitDistance(float distanceScale);| Имя | Тип | По умолчанию |
|---|---|---|
distanceScale | float | — |
SetGravitySpaceOverrideModevoid
public void SetGravitySpaceOverrideMode(Area2D.SpaceOverride spaceOverrideMode);| Имя | Тип | По умолчанию |
|---|---|---|
spaceOverrideMode | Area2D.SpaceOverride | — |
SetLinearDampvoid
public void SetLinearDamp(float linearDamp);| Имя | Тип | По умолчанию |
|---|---|---|
linearDamp | float | — |
SetLinearDampSpaceOverrideModevoid
public void SetLinearDampSpaceOverrideMode(Area2D.SpaceOverride spaceOverrideMode);| Имя | Тип | По умолчанию |
|---|---|---|
spaceOverrideMode | Area2D.SpaceOverride | — |
SetMonitorablevoid
public void SetMonitorable(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetMonitoringvoid
public void SetMonitoring(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetPriorityvoid
public void SetPriority(int priority);| Имя | Тип | По умолчанию |
|---|---|---|
priority | int | — |
Сигналы и события8
AreaEnteredСобытие
public event Area2D.AreaEnteredEventHandler AreaEntered;Выдается, когда полученный area входит в эту область. Требуется, чтобы Area2D.Monitoring был установлен в true.
| Имя | Тип | По умолчанию |
|---|---|---|
area | Area2D | — |
AreaExitedСобытие
public event Area2D.AreaExitedEventHandler AreaExited;Выдается, когда полученная area выходит из этой области. Требует, чтобы Area2D.Monitoring был установлен на true.
| Имя | Тип | По умолчанию |
|---|---|---|
area | Area2D | — |
AreaShapeEnteredСобытие
public event Area2D.AreaShapeEnteredEventHandler AreaShapeEntered;Выдается, когда Shape2D полученного area входит в форму этой области. Требует, чтобы Area2D.Monitoring был установлен в true.
local_shape_index и area_shape_index содержат индексы взаимодействующих фигур из этой области и другой области соответственно. area_rid содержит Rid другой области. Эти значения можно использовать с PhysicsServer2D.
Пример: Получить узел CollisionShape2D из индекса формы:
| Имя | Тип | По умолчанию |
|---|---|---|
areaRid | Rid | — |
area | Area2D | — |
areaShapeIndex | long | — |
localShapeIndex | long | — |
AreaShapeExitedСобытие
public event Area2D.AreaShapeExitedEventHandler AreaShapeExited;Выдается, когда Shape2D полученной area выходит из формы этой области. Требует, чтобы Area2D.Monitoring был установлен на true.
См. также Area2D.AreaShapeEntered.
| Имя | Тип | По умолчанию |
|---|---|---|
areaRid | Rid | — |
area | Area2D | — |
areaShapeIndex | long | — |
localShapeIndex | long | — |
BodyEnteredСобытие
public event Area2D.BodyEnteredEventHandler BodyEntered;Вызывается, когда полученное body попадает в эту область. body может быть PhysicsBody2D или TileMap. TileMap обнаруживаются, если их TileSet имеет настроенные формы столкновений. Требует, чтобы Area2D.Monitoring был установлен на true.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity2D | — |
BodyExitedСобытие
public event Area2D.BodyExitedEventHandler BodyExited;Вызывается, когда полученное body покидает эту область. body может быть PhysicsBody2D или TileMap. TileMap обнаруживаются, если их TileSet имеет настроенные формы столкновений. Требует, чтобы Area2D.Monitoring был установлен на true.
| Имя | Тип | По умолчанию |
|---|---|---|
body | Entity2D | — |
BodyShapeEnteredСобытие
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 из индекса формы:
| Имя | Тип | По умолчанию |
|---|---|---|
bodyRid | Rid | — |
body | Entity2D | — |
bodyShapeIndex | long | — |
localShapeIndex | long | — |
BodyShapeExitedСобытие
public event Area2D.BodyShapeExitedEventHandler BodyShapeExited;Выдается, когда Shape2D полученного body выходит из формы этой области. body может быть PhysicsBody2D или TileMap. TileMap обнаруживаются, если их TileSet имеет настроенные формы столкновений. Требует, чтобы Area2D.Monitoring был установлен на true.
См. также Area2D.BodyShapeEntered.
| Имя | Тип | По умолчанию |
|---|---|---|
bodyRid | Rid | — |
body | Entity2D | — |
bodyShapeIndex | long | — |
localShapeIndex | long | — |
Area2D.SpaceOverride
| Значение | Описание |
|---|---|
Combine = 1 | Эта область добавляет свои значения гравитации/затухания ко всему, что было рассчитано до сих пор (в порядке |
CombineReplace = 2 | Эта область добавляет свои значения гравитации/демпфирования ко всему, что было рассчитано до сих пор (в порядке |
Disabled = 0 | Эта область не влияет на гравитацию/демпфирование. |
Replace = 3 | Эта область заменяет любую гравитацию/демпфирование, даже значения по умолчанию, игнорируя любые области с более низким приоритетом. |
ReplaceCombine = 4 | Эта область заменяет все рассчитанные до сих пор значения гравитации/демпфирования (в порядке |