reckfellENGINE

RayCast3D

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

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

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

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

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

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

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

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

Свойства10

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

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

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

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

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

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

DebugShapeCustomColorСвойство
# DebugShapeCustomColor
C#
public Color DebugShapeCustomColor { get; set; }

Цвет, используемый для рисования формы в редакторе и в режиме работы, если Видимые области соприкосновения включён в Отладка меню. Этот цвет будет выделен во время работы, если RayCast3D С чем-то сталкивается. В случае установки Color(0.0, 0.0, 0.0) (по умолчанию), цвет, установленный в ProjectSettings.debug/shapes/collision/shape_color используется.

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

Если установлено значение 1, в качестве отладочной формы используется линия. В противном случае рисуется усеченная пирамида для представления RayCast3D. Требует включения Видимые области соприкосновения в меню Debug, чтобы отладочная форма была видна во время выполнения.

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

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

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

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

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

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

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

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

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

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

Методы35

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

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

Параметры
ИмяТипПо умолчанию
nodeCollisionObject3D—
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, если ни один объект не пересекает луч (т. е. RayCast3D.IsColliding возвращает false). Примечание: Этот объект не обязательно является CollisionObject3D. Например, если луч пересекает CsgShape3D или GridMap, метод вернет экземпляр CsgShape3D или GridMap.

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

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

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

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

C#
var target = (CollisionObject3D)GetCollider(); // A CollisionObject3D.
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
GetCollisionFaceIndexint
# GetCollisionFaceIndex
C#
public int GetCollisionFaceIndex();

Возвращает индекс грани объекта столкновения в точке столкновения или -1, если фигура, пересекающая луч, не является ConcavePolygonShape3D.

Возвращает int
GetCollisionMaskuint
# GetCollisionMask
C#
public uint GetCollisionMask();
Возвращает uint
GetCollisionMaskValuebool
# GetCollisionMaskValue
C#
public bool GetCollisionMaskValue(int layerNumber);

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

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

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

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

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

Возвращает Vector3
GetDebugShapeCustomColorColor
# GetDebugShapeCustomColor
C#
public Color GetDebugShapeCustomColor();
Возвращает Color
GetDebugShapeThicknessint
# GetDebugShapeThickness
C#
public int GetDebugShapeThickness();
Возвращает int
GetExcludeParentBodybool
# GetExcludeParentBody
C#
public bool GetExcludeParentBody();
Возвращает bool
GetTargetPositionVector3
# GetTargetPosition
C#
public Vector3 GetTargetPosition();
Возвращает Vector3
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
IsHitBackFacesEnabledbool
# IsHitBackFacesEnabled
C#
public bool IsHitBackFacesEnabled();
Возвращает bool
IsHitFromInsideEnabledbool
# IsHitFromInsideEnabled
C#
public bool IsHitFromInsideEnabled();
Возвращает bool
RemoveExceptionvoid
# RemoveException
C#
public void RemoveException(CollisionObject3D node);

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

Параметры
ИмяТипПо умолчанию
nodeCollisionObject3D—
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 включает или отключает указанный слой в RayCast3D.CollisionMask при заданном layer_number от 1 до 32.

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

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

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

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