CollisionObject2D
Базовый объект физического обнаружения 2D.
Тела и зоны наследуют CollisionObject2D. Геометрию задают дочерние CollisionShape и ресурсы Shape; видимый спрайт/меш не создаёт её автоматически. Layer задаёт принадлежность объекта, Mask — фильтр обнаружения/взаимодействия.
Номер слоя 3 соответствует биту 4. Методы SetCollisionLayerValue/SetCollisionMaskValue принимают номер 1–32, а не готовую битовую маску. Для лучевого исключения используйте GetRid, а не GetInstanceId. Индекс shape в запросе относится к физическим формам; он не равен произвольному индексу ребёнка в иерархии.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Свойства5
CollisionLayerСвойство
public uint CollisionLayer { get; set; }Битовая маска принадлежности объекта слоям физики 2D. Слой 3 имеет значение 4, а маска 3 включает слои 1 и 2. Не путайте с фильтром CollisionMask.
CollisionMaskСвойство
public uint CollisionMask { get; set; }Битовая маска фильтра взаимодействия или обнаружения. Для Area2D выбирает слои обнаруживаемого тела; контакт тел не требует одинаковых взаимных масок. У лучей и навигации отдельные фильтры.
CollisionPriorityСвойство
public float CollisionPriority { get; set; }Приоритет, используемый для решения столкновений при возникновении проникновения. Чем выше приоритет, тем ниже будет проникновение в объект. Это может быть использовано, например, для предотвращения прорыва игрока через границы уровня.
DisableModeСвойство
public CollisionObject2D.DisableModeEnum DisableMode { get; set; }Определяет поведение в физике, когда Entity.ProcessMode установлен в Entity.ProcessModeEnum.Disabled.
InputPickableСвойство
public bool InputPickable { get; set; }Если true, этот объект можно выбрать. Можно выбрать, обнаружив вход/выход указателя мыши, и если мышь находится внутри него, сообщать о событиях ввода. Требуется установить хотя бы один бит CollisionObject2D.CollisionLayer.
Методы41
CreateShapeOwneruint
public uint CreateShapeOwner(ReckfellObject owner);Создает нового владельца формы для данного объекта. Возвращает owner_id нового владельца для дальнейшего использования.
| Имя | Тип | По умолчанию |
|---|---|---|
owner | ReckfellObject | — |
uintGetCollisionLayeruint
public uint GetCollisionLayer();uintGetCollisionLayerValuebool
public bool GetCollisionLayerValue(int layerNumber);Проверяет один бит принадлежности по номеру слоя 1–32. Не принимает готовую битовую маску.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
layerNumberНомер слоя от 1 до 32 включительно. Номер 3 соответствует биту со значением 4.
booltrue, если выбранный бит установлен; false, если сброшен. Недопустимый номер вызывает сообщение об ошибке и возвращает false.
GetCollisionMaskuint
public uint GetCollisionMask();uintGetCollisionMaskValuebool
public bool GetCollisionMaskValue(int layerNumber);Проверяет один бит фильтра по номеру слоя 1–32. Не принимает готовую битовую маску.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
layerNumberНомер слоя от 1 до 32 включительно. Номер 3 соответствует биту со значением 4.
booltrue, если выбранный бит установлен; false, если сброшен. Недопустимый номер вызывает сообщение об ошибке и возвращает false.
GetCollisionPriorityfloat
public float GetCollisionPriority();floatGetDisableModeCollisionObject2D.DisableModeEnum
public CollisionObject2D.DisableModeEnum GetDisableMode();CollisionObject2D.DisableModeEnumGetShapeOwnerOneWayCollisionDirectionVector2
public Vector2 GetShapeOwnerOneWayCollisionDirection(uint ownerId);Возвращает one_way_collision_direction владельца фигуры, идентифицированного заданным owner_id.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
Vector2GetShapeOwnerOneWayCollisionMarginfloat
public float GetShapeOwnerOneWayCollisionMargin(uint ownerId);Возвращает one_way_collision_margin владельца фигуры, идентифицированного заданным owner_id.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
floatGetShapeOwnersint[]
public int[] GetShapeOwners();Возвращает Reckfell.Collections.Array идентификаторов owner_id. Вы можете использовать эти идентификаторы в других методах, которые принимают owner_id в качестве аргумента.
int[]IsPickablebool
public bool IsPickable();boolIsShapeOwnerDisabledbool
public bool IsShapeOwnerDisabled(uint ownerId);Если true, владелец фигуры и его фигуры отключены.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
boolIsShapeOwnerOneWayCollisionEnabledbool
public bool IsShapeOwnerOneWayCollisionEnabled(uint ownerId);Возвращает true, если столкновения для владельца фигуры, происходящие из этого CollisionObject2D, не будут сообщаться о столкновениях с CollisionObject2D.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
boolRemoveShapeOwnervoid
public void RemoveShapeOwner(uint ownerId);Удаляет указанного владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
SetCollisionLayervoid
public void SetCollisionLayer(uint layer);| Имя | Тип | По умолчанию |
|---|---|---|
layer | uint | — |
SetCollisionLayerValuevoid
public void SetCollisionLayerValue(int layerNumber, bool value);Меняет один бит принадлежности, сохраняя остальные. Для полного назначения маски используйте соответствующее свойство CollisionLayer.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
layerNumberНомер слоя 1–32, не значение маски. Вне диапазона изменение отклоняется с сообщением об ошибке.
valuetrue устанавливает выбранный бит; false сбрасывает его.
SetCollisionMaskvoid
public void SetCollisionMask(uint mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | uint | — |
SetCollisionMaskValuevoid
public void SetCollisionMaskValue(int layerNumber, bool value);Меняет один бит фильтра, сохраняя остальные. Для полного назначения маски используйте соответствующее свойство CollisionMask.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
layerNumberНомер слоя 1–32, не значение маски. Вне диапазона изменение отклоняется с сообщением об ошибке.
valuetrue устанавливает выбранный бит; false сбрасывает его.
SetCollisionPriorityvoid
public void SetCollisionPriority(float priority);| Имя | Тип | По умолчанию |
|---|---|---|
priority | float | — |
SetDisableModevoid
public void SetDisableMode(CollisionObject2D.DisableModeEnum mode);| Имя | Тип | По умолчанию |
|---|---|---|
mode | CollisionObject2D.DisableModeEnum | — |
SetPickablevoid
public void SetPickable(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
ShapeFindOwneruint
public uint ShapeFindOwner(int shapeIndex);Возвращает owner_id заданной фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
shapeIndex | int | — |
uintShapeOwnerAddShapevoid
public void ShapeOwnerAddShape(uint ownerId, Shape2D shape);Добавляет Shape2D к владельцу фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
shape | Shape2D | — |
ShapeOwnerClearShapesvoid
public void ShapeOwnerClearShapes(uint ownerId);Удаляет все фигуры у владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
ShapeOwnerGetOwnerReckfellObject
public ReckfellObject ShapeOwnerGetOwner(uint ownerId);Возвращает родительский объект указанного владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
ReckfellObjectShapeOwnerGetShapeShape2D
public Shape2D ShapeOwnerGetShape(uint ownerId, int shapeId);Возвращает Shape2D с указанным идентификатором от указанного владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
shapeId | int | — |
Shape2DShapeOwnerGetShapeCountint
public int ShapeOwnerGetShapeCount(uint ownerId);Возвращает количество фигур, содержащихся в заданном владельце фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
intShapeOwnerGetShapeIndexint
public int ShapeOwnerGetShapeIndex(uint ownerId, int shapeId);Возвращает дочерний индекс Shape2D с указанным идентификатором от указанного владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
shapeId | int | — |
intShapeOwnerGetTransformTransform2D
public Transform2D ShapeOwnerGetTransform(uint ownerId);Возвращает Transform2D владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
Transform2DShapeOwnerRemoveShapevoid
public void ShapeOwnerRemoveShape(uint ownerId, int shapeId);Удаляет фигуру у указанного владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
shapeId | int | — |
ShapeOwnerSetDisabledvoid
public void ShapeOwnerSetDisabled(uint ownerId, bool disabled);Если true, отключает владельца данной фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
disabled | bool | — |
ShapeOwnerSetOneWayCollisionvoid
public void ShapeOwnerSetOneWayCollision(uint ownerId, bool enable);Если enable имеет значение true, столкновения для владельца фигуры, происходящие от этого CollisionObject2D, не будут сообщаться о столкновениях с CollisionObject2D.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
enable | bool | — |
ShapeOwnerSetOneWayCollisionDirectionvoid
public void ShapeOwnerSetOneWayCollisionDirection(uint ownerId, Vector2 direction);Устанавливает параметр one_way_collision_direction владельца фигуры, идентифицированного заданным параметром owner_id, равным direction.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
direction | Vector2 | — |
ShapeOwnerSetOneWayCollisionMarginvoid
public void ShapeOwnerSetOneWayCollisionMargin(uint ownerId, float margin);Устанавливает one_way_collision_margin владельца фигуры, идентифицированного заданным owner_id, на margin пикселей.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
margin | float | — |
ShapeOwnerSetTransformvoid
public void ShapeOwnerSetTransform(uint ownerId, Transform2D transform);Устанавливает Transform2D для данного владельца фигуры.
| Имя | Тип | По умолчанию |
|---|---|---|
ownerId | uint | — |
transform | Transform2D | — |
_InputEventvoid
public virtual void _InputEvent(Viewport viewport, InputEvent @event, int shapeIdx);Обнаружение мыши и прикосновения InputEvents - event когда они происходят во время зависания над объектом. viewport это Viewport что событие началось в (для просмотров, кроме основного, которое должно быть обнаружено, Viewport.PhysicsObjectPicking должны быть установлены следующим образом: true). shape_idx - индекс обнаруженной формы из PhysicsServer2D.
См. также Entity._UnhandledInput, CollisionObject2D.ShapeFindOwner, и CollisionObject2D.ShapeOwnerGetOwner.
Примечание: InputEventScreenDrag События возникают, если при нахождении объекта в зависании или когда объект находится на пути движения.
Примечание: CollisionObject2D.InputEvent требуется CollisionObject2D.InputPickable Должен быть true и по крайней мере один CollisionObject2D.CollisionLayer Немного нужно.
| Имя | Тип | По умолчанию |
|---|---|---|
viewport | Viewport | — |
event | InputEvent | — |
shapeIdx | int | — |
_MouseEntervoid
public virtual void _MouseEnter();Вызывается, когда указатель мыши входит в любую из фигур этого объекта. Требует, чтобы CollisionObject2D.InputPickable был true и был установлен хотя бы один бит CollisionObject2D.CollisionLayer. Обратите внимание, что перемещение между различными фигурами в пределах одного CollisionObject2D не приведет к вызову этой функции.
_MouseExitvoid
public virtual void _MouseExit();Вызывается, когда указатель мыши покидает все формы этого объекта. Требует, чтобы CollisionObject2D.InputPickable был true и был установлен хотя бы один бит CollisionObject2D.CollisionLayer. Обратите внимание, что перемещение между различными формами в пределах одного CollisionObject2D не приведет к вызову этой функции.
_MouseShapeEntervoid
public virtual void _MouseShapeEnter(int shapeIdx);Вызывается, когда указатель мыши входит в любую из фигур этого объекта или перемещается из одной фигуры в другую. shape_idx — это дочерний индекс вновь введенного Shape2D. Требует, чтобы CollisionObject2D.InputPickable был true и был вызван хотя бы один бит CollisionObject2D.CollisionLayer.
| Имя | Тип | По умолчанию |
|---|---|---|
shapeIdx | int | — |
_MouseShapeExitvoid
public virtual void _MouseShapeExit(int shapeIdx);Вызывается, когда указатель мыши покидает любую из фигур этого объекта. shape_idx — это дочерний индекс выведенного Shape2D. Требует, чтобы CollisionObject2D.InputPickable был true и был вызван хотя бы один бит CollisionObject2D.CollisionLayer.
| Имя | Тип | По умолчанию |
|---|---|---|
shapeIdx | int | — |
Сигналы и события5
InputEventСобытие
public event CollisionObject2D.InputEventEventHandler InputEvent;Обнаружение мыши и прикосновения InputEvents - event когда они происходят во время зависания над объектом. viewport это Viewport что событие началось в (для просмотров, кроме основного, которое должно быть обнаружено, Viewport.PhysicsObjectPicking должны быть установлены следующим образом: true). shape_idx - индекс обнаруженной формы из PhysicsServer2D.
См. также Entity._UnhandledInput, CollisionObject2D.ShapeFindOwner, и CollisionObject2D.ShapeOwnerGetOwner.
Примечание: InputEventScreenDrag События возникают, если при нахождении объекта в зависании или когда объект находится на пути движения.
Примечание: CollisionObject2D.InputEvent требуется CollisionObject2D.InputPickable Должен быть true и по крайней мере один CollisionObject2D.CollisionLayer Немного нужно.
| Имя | Тип | По умолчанию |
|---|---|---|
viewport | Entity | — |
event | InputEvent | — |
shapeIdx | long | — |
MouseEnteredСобытие
public event Action MouseEntered;Выдается, когда указатель мыши входит в любую из фигур этого объекта. Требует, чтобы CollisionObject2D.InputPickable был true и был установлен хотя бы один бит CollisionObject2D.CollisionLayer. Обратите внимание, что перемещение между различными фигурами в пределах одного CollisionObject2D не приведет к выдаче этого сигнала.
Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject2D мала. Этот сигнал также может не выдаваться, если другой CollisionObject2D перекрывает рассматриваемый CollisionObject2D.
MouseExitedСобытие
public event Action MouseExited;Выдается, когда указатель мыши покидает все формы этого объекта. Требует, чтобы CollisionObject2D.InputPickable был true и был установлен хотя бы один бит CollisionObject2D.CollisionLayer. Обратите внимание, что перемещение между различными формами в пределах одного CollisionObject2D не приведет к выдаче этого сигнала.
Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject2D мала. Этот сигнал также может не выдаваться, если другой CollisionObject2D перекрывает рассматриваемый CollisionObject2D.
MouseShapeEnteredСобытие
public event CollisionObject2D.MouseShapeEnteredEventHandler MouseShapeEntered;Вызывается, когда указатель мыши входит в любую из фигур этого объекта или перемещается из одной фигуры в другую. shape_idx — это дочерний индекс вновь введенного Shape2D. Требует, чтобы CollisionObject2D.InputPickable был true и был установлен хотя бы один бит CollisionObject2D.CollisionLayer.
| Имя | Тип | По умолчанию |
|---|---|---|
shapeIdx | long | — |
MouseShapeExitedСобытие
public event CollisionObject2D.MouseShapeExitedEventHandler MouseShapeExited;Вызывается, когда указатель мыши покидает любую из фигур этого объекта. shape_idx — это дочерний индекс выведенного Shape2D. Требует, чтобы CollisionObject2D.InputPickable был true и был установлен хотя бы один бит CollisionObject2D.CollisionLayer.
| Имя | Тип | По умолчанию |
|---|---|---|
shapeIdx | long | — |
CollisionObject2D.DisableModeEnum
| Значение | Описание |
|---|---|
KeepActive = 2 | Если |
MakeStatic = 1 | Когда |
Remove = 0 | Когда |