reckfellENGINE

CollisionObject3D

Базовый объект физического обнаружения 3D.

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

Тела и зоны наследуют CollisionObject3D. Геометрию задают дочерние CollisionShape и ресурсы Shape; видимый спрайт/меш не создаёт её автоматически. Layer задаёт принадлежность объекта, Mask — фильтр обнаружения/взаимодействия.

Номер слоя 3 соответствует биту 4. Методы SetCollisionLayerValue/SetCollisionMaskValue принимают номер 1–32, а не готовую битовую маску. Для лучевого исключения используйте GetRid, а не GetInstanceId. Индекс shape в запросе относится к физическим формам; он не равен произвольному индексу ребёнка в иерархии.

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

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

Свойства6

CollisionLayerСвойство
# CollisionLayer
C#
public uint CollisionLayer { get; set; }

Физические слои это CollisionObject3D в. Объекты столкновения могут существовать в одном или более из 32 различных слоев. CollisionObject3D.CollisionMaskДля облегчения изменения этого значения скрипта см. CollisionObject3D.SetCollisionLayerValue. Примечание: Object A может обнаружить контакт с объектом B только в том случае, если объект B находится в любом из слоев объекта A сканирования. Слои и маски столкновений в документации для дополнительной информации.

CollisionMaskСвойство
# CollisionMask
C#
public uint CollisionMask { get; set; }

Физические слои это CollisionObject3D сканирование. Объекты столкновения могут просканировать один или более из 32 различных слоев. CollisionObject3D.CollisionLayerДля облегчения изменения этого значения скрипта см. CollisionObject3D.SetCollisionMaskValue. Примечание: Object A может обнаружить контакт с объектом B только в том случае, если объект B находится в любом из слоев объекта A сканирования. Слои и маски столкновений в документации для дополнительной информации.

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

Приоритет, используемый для решения столкновений при возникновении проникновения. Чем выше приоритет, тем ниже будет проникновение в объект. Это может быть использовано, например, для предотвращения прорыва игрока через границы уровня.

DisableModeСвойство
# DisableMode
C#
public CollisionObject3D.DisableModeEnum DisableMode { get; set; }

Определяет поведение в физике, когда Entity.ProcessMode установлен в Entity.ProcessModeEnum.Disabled.

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

Если true, CollisionObject3D продолжит получать входные события при перемещении мыши по его фигуре.

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

Если true, этот объект можно выбрать. Можно выбрать, обнаружив вход/выход указателя мыши, и если мышь находится внутри него, сообщать о событиях ввода. Требуется установить хотя бы один бит CollisionObject3D.CollisionLayer.

Методы35

CreateShapeOwneruint
# CreateShapeOwner
C#
public uint CreateShapeOwner(ReckfellObject owner);

Создает нового владельца формы для данного объекта. Возвращает owner_id нового владельца для дальнейшего использования.

Параметры
ИмяТипПо умолчанию
ownerReckfellObject—
Возвращает uint
GetCaptureInputOnDragbool
# GetCaptureInputOnDrag
C#
public bool GetCaptureInputOnDrag();
Возвращает bool
GetCollisionLayeruint
# GetCollisionLayer
C#
public uint GetCollisionLayer();
Возвращает uint
GetCollisionLayerValuebool
# GetCollisionLayerValue
C#
public bool GetCollisionLayerValue(int layerNumber);

Возвращает, включен ли указанный слой CollisionObject3D.CollisionLayer, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetCollisionMaskuint
# GetCollisionMask
C#
public uint GetCollisionMask();
Возвращает uint
GetCollisionMaskValuebool
# GetCollisionMaskValue
C#
public bool GetCollisionMaskValue(int layerNumber);

Возвращает, включен ли указанный слой CollisionObject3D.CollisionMask, учитывая layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetCollisionPriorityfloat
# GetCollisionPriority
C#
public float GetCollisionPriority();
Возвращает float
GetDisableModeCollisionObject3D.DisableModeEnum
# GetDisableMode
C#
public CollisionObject3D.DisableModeEnum GetDisableMode();
Возвращает CollisionObject3D.DisableModeEnum
GetRidRid
# GetRid
C#
public Rid GetRid();

Возвращает Rid объекта.

Возвращает Rid
GetShapeOwnersint[]
# GetShapeOwners
C#
public int[] GetShapeOwners();

Возвращает Reckfell.Collections.Array идентификаторов owner_id. Вы можете использовать эти идентификаторы в других методах, которые принимают owner_id в качестве аргумента.

Возвращает int[]
IsRayPickablebool
# IsRayPickable
C#
public bool IsRayPickable();
Возвращает bool
IsShapeOwnerDisabledbool
# IsShapeOwnerDisabled
C#
public bool IsShapeOwnerDisabled(uint ownerId);

Если true, владелец фигуры и его фигуры отключены.

Параметры
ИмяТипПо умолчанию
ownerIduint—
Возвращает bool
RemoveShapeOwnervoid
# RemoveShapeOwner
C#
public void RemoveShapeOwner(uint ownerId);

Удаляет указанного владельца фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
SetCaptureInputOnDragvoid
# SetCaptureInputOnDrag
C#
public void SetCaptureInputOnDrag(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetCollisionLayervoid
# SetCollisionLayer
C#
public void SetCollisionLayer(uint layer);
Параметры
ИмяТипПо умолчанию
layeruint—
SetCollisionLayerValuevoid
# SetCollisionLayerValue
C#
public void SetCollisionLayerValue(int layerNumber, bool value);

Включает/выключает принадлежность слою по номеру 1–32. Номер 3 меняет бит 4; передавайте номер, а не предварительно вычисленную маску.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetCollisionMaskvoid
# SetCollisionMask
C#
public void SetCollisionMask(uint mask);
Параметры
ИмяТипПо умолчанию
maskuint—
SetCollisionMaskValuevoid
# SetCollisionMaskValue
C#
public void SetCollisionMaskValue(int layerNumber, bool value);

Меняет фильтр по номеру слоя 1–32. Mask и Layer имеют разные роли; этот вызов не меняет геометрию формы или все фильтры других объектов.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetCollisionPriorityvoid
# SetCollisionPriority
C#
public void SetCollisionPriority(float priority);
Параметры
ИмяТипПо умолчанию
priorityfloat—
SetDisableModevoid
# SetDisableMode
C#
public void SetDisableMode(CollisionObject3D.DisableModeEnum mode);
Параметры
ИмяТипПо умолчанию
modeCollisionObject3D.DisableModeEnum—
SetRayPickablevoid
# SetRayPickable
C#
public void SetRayPickable(bool rayPickable);
Параметры
ИмяТипПо умолчанию
rayPickablebool—
ShapeFindOwneruint
# ShapeFindOwner
C#
public uint ShapeFindOwner(int shapeIndex);

Возвращает owner_id заданной фигуры.

Параметры
ИмяТипПо умолчанию
shapeIndexint—
Возвращает uint
ShapeOwnerAddShapevoid
# ShapeOwnerAddShape
C#
public void ShapeOwnerAddShape(uint ownerId, Shape3D shape);

Добавляет Shape3D к владельцу фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
shapeShape3D—
ShapeOwnerClearShapesvoid
# ShapeOwnerClearShapes
C#
public void ShapeOwnerClearShapes(uint ownerId);

Удаляет все фигуры у владельца фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
ShapeOwnerGetOwnerReckfellObject
# ShapeOwnerGetOwner
C#
public ReckfellObject ShapeOwnerGetOwner(uint ownerId);

Возвращает родительский объект указанного владельца фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
Возвращает ReckfellObject
ShapeOwnerGetShapeShape3D
# ShapeOwnerGetShape
C#
public Shape3D ShapeOwnerGetShape(uint ownerId, int shapeId);

Возвращает Shape3D с указанным идентификатором от указанного владельца фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
shapeIdint—
Возвращает Shape3D
ShapeOwnerGetShapeCountint
# ShapeOwnerGetShapeCount
C#
public int ShapeOwnerGetShapeCount(uint ownerId);

Возвращает количество фигур, содержащихся в заданном владельце фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
Возвращает int
ShapeOwnerGetShapeIndexint
# ShapeOwnerGetShapeIndex
C#
public int ShapeOwnerGetShapeIndex(uint ownerId, int shapeId);

Возвращает дочерний индекс Shape3D с указанным идентификатором от указанного владельца фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
shapeIdint—
Возвращает int
ShapeOwnerGetTransformTransform3D
# ShapeOwnerGetTransform
C#
public Transform3D ShapeOwnerGetTransform(uint ownerId);

Возвращает Transform3D владельца фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
Возвращает Transform3D
ShapeOwnerRemoveShapevoid
# ShapeOwnerRemoveShape
C#
public void ShapeOwnerRemoveShape(uint ownerId, int shapeId);

Удаляет фигуру у указанного владельца фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
shapeIdint—
ShapeOwnerSetDisabledvoid
# ShapeOwnerSetDisabled
C#
public void ShapeOwnerSetDisabled(uint ownerId, bool disabled);

Если true, отключает владельца данной фигуры.

Параметры
ИмяТипПо умолчанию
ownerIduint—
disabledbool—
ShapeOwnerSetTransformvoid
# ShapeOwnerSetTransform
C#
public void ShapeOwnerSetTransform(uint ownerId, Transform3D transform);

Устанавливает Transform3D для данного владельца формы.

Параметры
ИмяТипПо умолчанию
ownerIduint—
transformTransform3D—
_InputEventvoid
# _InputEvent
C#
public virtual void _InputEvent(Camera3D camera, InputEvent @event, Vector3 eventPosition, Vector3 normal, int shapeIdx);

Обнаружение мыши и прикосновения InputEvents - event когда они происходят во время зависания над объектом. camera это Camera3D что событие возникло в (для камер внутри обзорных порталов, помимо основного, который будет обнаружен, родитель Viewport.PhysicsObjectPicking должны быть установлены следующим образом: true). event_position - положение, на которое бьет луч от камеры до мыши в глобальном пространстве. normal - обычный вектор поверхности в этой точке мирового пространства. shape_idx - индекс обнаруженной формы из PhysicsServer3D. См. также Entity._UnhandledInput, CollisionObject3D.ShapeFindOwner, и CollisionObject3D.ShapeOwnerGetOwner. Примечание: InputEventScreenDrag События возникают, если при нахождении объекта в зависании или когда объект находится на пути движения. Примечание: CollisionObject3D.InputEvent требуется CollisionObject3D.InputRayPickable Должен быть true и по крайней мере один CollisionObject3D.CollisionLayer Немного нужно.

Параметры
ИмяТипПо умолчанию
cameraCamera3D—
eventInputEvent—
eventPositionVector3—
normalVector3—
shapeIdxint—
_MouseEntervoid
# _MouseEnter
C#
public virtual void _MouseEnter();

Вызывается, когда указатель мыши входит в любую из фигур этого объекта. Требует, чтобы CollisionObject3D.InputRayPickable был true и был установлен хотя бы один бит CollisionObject3D.CollisionLayer. Обратите внимание, что перемещение между различными фигурами в пределах одного CollisionObject3D не приведет к вызову этой функции.

_MouseExitvoid
# _MouseExit
C#
public virtual void _MouseExit();

Вызывается, когда указатель мыши покидает все формы этого объекта. Требует, чтобы CollisionObject3D.InputRayPickable был true и был установлен хотя бы один бит CollisionObject3D.CollisionLayer. Обратите внимание, что перемещение между различными формами в пределах одного CollisionObject3D не приведет к вызову этой функции.

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

InputEventСобытие
# InputEvent
C#
public event CollisionObject3D.InputEventEventHandler InputEvent;

Обнаружение мыши и прикосновения InputEvents - event когда они происходят во время зависания над объектом. camera это Camera3D что событие возникло в (для камер внутри обзорных порталов, помимо основного, который будет обнаружен, родитель Viewport.PhysicsObjectPicking должны быть установлены следующим образом: true). event_position - положение, на которое бьет луч от камеры до мыши в глобальном пространстве. normal - обычный вектор поверхности в этой точке мирового пространства. shape_idx - индекс обнаруженной формы из PhysicsServer3D. См. также Entity._UnhandledInput, CollisionObject3D.ShapeFindOwner, и CollisionObject3D.ShapeOwnerGetOwner. Примечание: InputEventScreenDrag События возникают, если при нахождении объекта в зависании или когда объект находится на пути движения. Примечание: CollisionObject3D.InputEvent требуется CollisionObject3D.InputRayPickable Должен быть true и по крайней мере один CollisionObject3D.CollisionLayer Немного нужно.

Параметры обработчика
ИмяТипПо умолчанию
cameraEntity—
eventInputEvent—
eventPositionVector3—
normalVector3—
shapeIdxlong—
MouseEnteredСобытие
# MouseEntered
C#
public event Action MouseEntered;

Выдается, когда указатель мыши входит в любую из форм этого объекта. Требует, чтобы CollisionObject3D.InputRayPickable был true и был установлен хотя бы один бит CollisionObject3D.CollisionLayer. Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject3D мала. Этот сигнал также может не выдаваться, если другой CollisionObject3D перекрывает рассматриваемый CollisionObject3D.

MouseExitedСобытие
# MouseExited
C#
public event Action MouseExited;

Выдается, когда указатель мыши выходит за пределы всех форм этого объекта. Требует, чтобы CollisionObject3D.InputRayPickable был true и был установлен хотя бы один бит CollisionObject3D.CollisionLayer. Примечание: Из-за отсутствия непрерывного обнаружения столкновений этот сигнал может не выдаваться в ожидаемом порядке, если мышь движется достаточно быстро, а область CollisionObject3D мала. Этот сигнал также может не выдаваться, если другой CollisionObject3D перекрывает рассматриваемый CollisionObject3D.

CollisionObject3D.DisableModeEnum

ЗначениеОписание
KeepActive = 2

Если Entity.ProcessMode установлен в Entity.ProcessModeEnum.Disabled, это не влияет на физическую симуляцию.

MakeStatic = 1

Когда Entity.ProcessMode установлен на Entity.ProcessModeEnum.Disabled, сделайте тело статичным. Не влияет на Area3D. PhysicsBody3D не может быть подвержен воздействию сил или других тел, пока он статичен. Автоматически верните PhysicsBody3D в исходный режим, когда Entity обрабатывается снова.

Remove = 0

Когда Entity.ProcessMode установлен на Entity.ProcessModeEnum.Disabled, удалить из моделирования физики, чтобы остановить все физические взаимодействия с этим CollisionObject3D. Автоматически повторно добавляется в моделирование физики, когда Entity обрабатывается снова.

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

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

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

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