reckfellENGINE

RayCast2D

Сущность лучевого запроса 2D с обновляемым результатом.

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

RayCast2D проверяет отрезок от своей мировой позиции до преобразованного TargetPosition. TargetPosition — локальная конечная точка, не мировая координата. После IsColliding можно читать collider, точку и нормаль.

Результат обновляется в физической фазе. ForceRaycastUpdate позволяет запросить обновление сейчас, даже при Enabled = false, но не выполняет шаг всей симуляции. Настройте Mask, категории тел/зон и исключения. Попадание изнутри может иметь нулевую нормаль; проверьте её до нормализации.

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

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

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

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

Свойства7

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

Если true, будут сообщаться столкновения с Area2D.

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

Если true, будут сообщаться столкновения с PhysicsBody2D.

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

Маска столкновений луча. Будут обнаружены только объекты, находящиеся хотя бы в одном слое столкновений, включенном в маске. Для получения дополнительной информации см. Слои и маски столкновений в документации.

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

Если true, будут сообщаться столкновения.

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

Если true, этот луч не будет сообщать о столкновениях с родительским узлом. Это свойство действует только в том случае, если родительский узел — CollisionObject2D. См. также Entity.GetParent и RayCast2D.AddException.

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

Если true, луч обнаружит попадание при запуске внутри фигур. В этом случае нормаль столкновения будет Vector2(0, 0). Не влияет на вогнутые полигоны фигуры.

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

Локальная конечная точка отрезка относительно RayCast. Для DirectSpaceState.From/To, напротив, используются мировые координаты; преобразуйте точку через ToGlobal при сопоставлении.

Методы28

AddExceptionvoid
# AddException
C#
public void AddException(CollisionObject2D node);

Добавляет исключение столкновений, чтобы луч не сообщал о столкновениях с указанным узлом node.

Параметры
ИмяТипПо умолчанию
nodeCollisionObject2D—
AddExceptionRidvoid
# AddExceptionRid
C#
public void AddExceptionRid(Rid rid);

Добавляет исключение столкновений, чтобы луч не сообщал о столкновениях с указанным Rid.

Параметры
ИмяТипПо умолчанию
ridRid—
ClearExceptionsvoid
# ClearExceptions
C#
public void ClearExceptions();

Удаляет все исключения столкновений для этого луча.

ForceRaycastUpdatevoid
# ForceRaycastUpdate
C#
public void ForceRaycastUpdate();

Обновляет результат запроса немедленно, в том числе при Enabled = false. Не продвигает всю физику и не заменяет выбор правильного мира/фазы доступа.

GetColliderReckfellObject
# GetCollider
C#
public ReckfellObject GetCollider();

Возвращает первый объект, пересекаемый лучом, или null, если ни один объект не пересекает луч (т.е. RayCast2D.IsColliding возвращает false). Примечание: Этот объект не обязательно является CollisionObject2D. Например, если луч пересекает TileMapLayer, метод вернет экземпляр TileMapLayer.

Возвращает ReckfellObject
GetColliderRidRid
# GetColliderRid
C#
public Rid GetColliderRid();

Возвращает Rid первого объекта, который пересекает луч, или пустой Rid, если ни один объект не пересекает луч (т. е. RayCast2D.IsColliding возвращает false).

Возвращает Rid
GetColliderShapeint
# GetColliderShape
C#
public int GetColliderShape();

Возвращает идентификатор формы первого объекта, который пересекает луч, или 0, если ни один объект не пересекает луч (т. е. RayCast2D.IsColliding возвращает false). Чтобы получить узел пересекаемой формы для цели CollisionObject2D, используйте:

C#
var target = (CollisionObject2D)GetCollider(); // A CollisionObject2D.
var shapeId = GetColliderShape(); // The shape index in the collider.
var ownerId = target.ShapeFindOwner(shapeId); // The owner ID in the collider.
var shape = target.ShapeOwnerGetOwner(ownerId);
Возвращает int
GetCollisionMaskuint
# GetCollisionMask
C#
public uint GetCollisionMask();
Возвращает uint
GetCollisionMaskValuebool
# GetCollisionMaskValue
C#
public bool GetCollisionMaskValue(int layerNumber);

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

Параметры
ИмяТипПо умолчанию
layerNumberint—
Возвращает bool
GetCollisionNormalVector2
# GetCollisionNormal
C#
public Vector2 GetCollisionNormal();

Возвращает нормаль формы пересекающегося объекта в точке столкновения, или Vector2(0, 0), если луч начинается внутри формы и RayCast2D.HitFromInside равен true. Примечание: Проверьте, что RayCast2D.IsColliding возвращает true перед вызовом этого метода, чтобы убедиться, что возвращаемая нормаль является допустимой и актуальной.

Возвращает Vector2
GetCollisionPointVector2
# GetCollisionPoint
C#
public Vector2 GetCollisionPoint();

Возвращает точку столкновения, в которой луч пересекает ближайший объект в глобальной системе координат. Если RayCast2D.HitFromInside равен true и луч начинается внутри формы столкновения, эта функция вернет исходную точку луча. Примечание: Проверьте, что RayCast2D.IsColliding возвращает true перед вызовом этого метода, чтобы убедиться, что возвращаемая точка является допустимой и актуальной.

Возвращает Vector2
GetExcludeParentBodybool
# GetExcludeParentBody
C#
public bool GetExcludeParentBody();
Возвращает bool
GetTargetPositionVector2
# GetTargetPosition
C#
public Vector2 GetTargetPosition();
Возвращает Vector2
IsCollideWithAreasEnabledbool
# IsCollideWithAreasEnabled
C#
public bool IsCollideWithAreasEnabled();
Возвращает bool
IsCollideWithBodiesEnabledbool
# IsCollideWithBodiesEnabled
C#
public bool IsCollideWithBodiesEnabled();
Возвращает bool
IsCollidingbool
# IsColliding
C#
public bool IsColliding();

Возвращает, пересекается ли какой-либо объект с вектором луча (с учетом длины вектора).

Возвращает bool
IsEnabledbool
# IsEnabled
C#
public bool IsEnabled();
Возвращает bool
IsHitFromInsideEnabledbool
# IsHitFromInsideEnabled
C#
public bool IsHitFromInsideEnabled();
Возвращает bool
RemoveExceptionvoid
# RemoveException
C#
public void RemoveException(CollisionObject2D node);

Удаляет исключение столкновений, чтобы луч мог сообщать о столкновениях с указанным node.

Параметры
ИмяТипПо умолчанию
nodeCollisionObject2D—
RemoveExceptionRidvoid
# RemoveExceptionRid
C#
public void RemoveExceptionRid(Rid rid);

Удаляет исключение столкновений, чтобы луч мог сообщать о столкновениях с указанным Rid.

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

На основе value включает или отключает указанный слой в RayCast2D.CollisionMask при заданном layer_number от 1 до 32.

Параметры
ИмяТипПо умолчанию
layerNumberint—
valuebool—
SetEnabledvoid
# SetEnabled
C#
public void SetEnabled(bool enabled);
Параметры
ИмяТипПо умолчанию
enabledbool—
SetExcludeParentBodyvoid
# SetExcludeParentBody
C#
public void SetExcludeParentBody(bool mask);
Параметры
ИмяТипПо умолчанию
maskbool—
SetHitFromInsidevoid
# SetHitFromInside
C#
public void SetHitFromInside(bool enable);
Параметры
ИмяТипПо умолчанию
enablebool—
SetTargetPositionvoid
# SetTargetPosition
C#
public void SetTargetPosition(Vector2 localPoint);
Параметры
ИмяТипПо умолчанию
localPointVector2—
Документация Reckfell EngineНаверх ↑
БЫСТРЫЙ ПЕРЕХОДНачало работыEntity и иерархияC# & .NET 10Сцены и префабы
Руководства и полный API Reckfell K
reckfellENGINE
RECKFELL ACCOUNT

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

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

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