ShapeCast3D
Трехмерная фигура, охватывающая область пространства для обнаружения CollisionObject3D-ов.
Трехмерная фигура, охватывающая область пространства для обнаружения CollisionObject3D-ов.
Приведение формы позволяет обнаруживать объекты столкновения, перемещая его ShapeCast3D.Shape вдоль направления приведения, определяемого ShapeCast3D.TargetPosition. Это похоже на RayCast3D, но позволяет перемещать область пространства, а не просто прямую линию. ShapeCast3D может обнаруживать несколько объектов столкновения. Это полезно для таких вещей, как широкие лазерные лучи или привязка простой формы к полу.
Немедленное перекрытие столкновений можно выполнить, установив ShapeCast3D.TargetPosition на Vector3(0, 0, 0) и вызвав ShapeCast3D.ForceShapecastUpdate в том же физическом кадре. Это помогает преодолеть некоторые ограничения Area3D при использовании в качестве мгновенной области обнаружения, поскольку информация о столкновении не сразу доступна ему.
Примечание: Приведение формы требует больших вычислительных затрат, чем приведение лучей.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ShapeCast3DКонструктор
public ShapeCast3D();Свойства11
CollideWithAreasСвойство
public bool CollideWithAreas { get; set; }Если true, будут сообщаться о столкновениях с Area3D-ми.
CollideWithBodiesСвойство
public bool CollideWithBodies { get; set; }Если true, будут сообщаться о столкновениях с PhysicsBody3D-ми.
CollisionMaskСвойство
public uint CollisionMask { get; set; }Маска столкновения формы. Будут обнаружены только те объекты, находящиеся хотя бы в одном из слое столкновения, включенном в маске. Для получения дополнительной информации см. Слои и маски столкновения в документации.
CollisionResultСвойство
public Reckfell.Collections.Array CollisionResult { get; }Возвращает полную информацию о столкновении из столкновительного развертки. Возвращаемые данные такие же, как в методе PhysicsDirectSpaceState3D.GetRestInfo.
DebugShapeCustomColorСвойство
public Color DebugShapeCustomColor { get; set; }Цвет, используемый для рисования формы в редакторе и в режиме работы, если Видимые области соприкосновения включён в Отладка меню. Этот цвет будет выделен во время работы, если ShapeCast3D С чем-то сталкивается.
В случае установки Color(0.0, 0.0, 0.0) (по умолчанию), цвет, установленный в ProjectSettings.debug/shapes/collision/shape_color используется.
EnabledСвойство
public bool Enabled { get; set; }Если true, будут сообщаться столкновения.
ExcludeParentСвойство
public bool ExcludeParent { get; set; }Если true, родительский узел будет исключен из обнаружения столкновений.
MarginСвойство
public float Margin { get; set; }Запас на столкновение для формы. Больший запас помогает обнаруживать столкновения более последовательно, за счет точности.
MaxResultsСвойство
public int MaxResults { get; set; }С помощью этого параметра можно ограничить количество пересечений, чтобы сократить время обработки.
ShapeСвойство
public Shape3D Shape { get; set; }Форма, которая будет использоваться для запросов на столкновение.
TargetPositionСвойство
public Vector3 TargetPosition { get; set; }Точка назначения фигуры относительно Entity3D.Position этого узла.
Методы39
AddExceptionvoid
public void AddException(CollisionObject3D node);Добавляет исключение столкновений, чтобы фигура не сообщала о столкновениях с указанным узлом.
| Имя | Тип | По умолчанию |
|---|---|---|
node | CollisionObject3D | — |
AddExceptionRidvoid
public void AddExceptionRid(Rid rid);Добавляет исключение столкновений, чтобы фигура не сообщала о столкновениях с указанным Rid.
| Имя | Тип | По умолчанию |
|---|---|---|
rid | Rid | — |
ClearExceptionsvoid
public void ClearExceptions();Удаляет все исключения столкновений для этой фигуры.
ForceShapecastUpdatevoid
public void ForceShapecastUpdate();Обновляет информацию о столкновении для фигуры немедленно, не дожидаясь следующего вызова _physics_process. Используйте этот метод, например, когда фигура или ее родительский элемент изменили состояние.
Примечание: Установка ShapeCast3D.Enabled на true не требуется для работы этого.
GetClosestCollisionSafeFractionfloat
public float GetClosestCollisionSafeFraction();Возвращает долю от начала этого приведения до его ShapeCast3D.TargetPosition того, насколько далеко может переместиться фигура, не вызывая столкновения, в виде значения между 0.0 и 1.0.
floatGetClosestCollisionUnsafeFractionfloat
public float GetClosestCollisionUnsafeFraction();Возвращает долю от начала этого приведения до его ShapeCast3D.TargetPosition того, как далеко должна переместиться фигура, чтобы вызвать столкновение, как значение между 0.0 и 1.0.
В идеальных условиях это было бы то же самое, что и ShapeCast3D.GetClosestCollisionSafeFraction, однако приведение фигуры вычисляется дискретными шагами, поэтому точная точка столкновения может находиться между двумя вычисленными позициями.
floatGetColliderReckfellObject
public ReckfellObject GetCollider(int index);Возвращает столкнувшийся ReckfellObject одного из нескольких столкновений в index или null, если ни один объект не пересекает фигуру (т. е. ShapeCast3D.IsColliding возвращает false).
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
ReckfellObjectGetColliderRidRid
public Rid GetColliderRid(int index);Возвращает Rid столкнувшегося объекта одного из нескольких столкновений в index.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
RidGetColliderShapeint
public int GetColliderShape(int index);Возвращает идентификатор сталкивающейся фигуры одного из нескольких столкновений в index или 0, если ни один объект не пересекает фигуру (т.е. ShapeCast3D.IsColliding возвращает false).
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
intGetCollisionCountint
public int GetCollisionCount();Количество столкновений, обнаруженных в точке удара. Используйте это для итерации по нескольким столкновениям, как предусмотрено методами ShapeCast3D.GetCollider, ShapeCast3D.GetColliderShape, ShapeCast3D.GetCollisionPoint и ShapeCast3D.GetCollisionNormal.
intGetCollisionMaskuint
public uint GetCollisionMask();uintGetCollisionMaskValuebool
public bool GetCollisionMaskValue(int layerNumber);Возвращает, включен ли указанный слой ShapeCast3D.CollisionMask, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
boolGetCollisionNormalVector3
public Vector3 GetCollisionNormal(int index);Возвращает нормаль одного из нескольких столкновений в точке index пересекающегося объекта.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
Vector3GetCollisionPointVector3
public Vector3 GetCollisionPoint(int index);Возвращает точку столкновения одного из нескольких столкновений в index, где фигура пересекает сталкивающийся объект.
Примечание: Эта точка находится в глобальной системе координат.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
Vector3GetCollisionResultReckfell.Collections.Array
public Reckfell.Collections.Array GetCollisionResult();Reckfell.Collections.ArrayGetDebugShapeCustomColorColor
public Color GetDebugShapeCustomColor();ColorGetExcludeParentBodybool
public bool GetExcludeParentBody();boolGetMarginfloat
public float GetMargin();floatGetMaxResultsint
public int GetMaxResults();intGetShapeShape3D
public Shape3D GetShape();Shape3DGetTargetPositionVector3
public Vector3 GetTargetPosition();Vector3IsCollideWithAreasEnabledbool
public bool IsCollideWithAreasEnabled();boolIsCollideWithBodiesEnabledbool
public bool IsCollideWithBodiesEnabled();boolIsCollidingbool
public bool IsColliding();Возвращает, пересекается ли какой-либо объект с вектором фигуры (с учетом длины вектора).
boolIsEnabledbool
public bool IsEnabled();boolRemoveExceptionvoid
public void RemoveException(CollisionObject3D node);Удаляет исключение столкновения, чтобы фигура не сообщала о столкновениях с указанным узлом.
| Имя | Тип | По умолчанию |
|---|---|---|
node | CollisionObject3D | — |
RemoveExceptionRidvoid
public void RemoveExceptionRid(Rid rid);Удаляет исключение столкновения, чтобы фигура не сообщала о столкновениях с указанным Rid.
| Имя | Тип | По умолчанию |
|---|---|---|
rid | Rid | — |
ResourceChangedvoid · Устарело
public void ResourceChanged(Resource resource);Этот метод ничего не даёт.
| Имя | Тип | По умолчанию |
|---|---|---|
resource | Resource | — |
SetCollideWithAreasvoid
public void SetCollideWithAreas(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetCollideWithBodiesvoid
public void SetCollideWithBodies(bool enable);| Имя | Тип | По умолчанию |
|---|---|---|
enable | bool | — |
SetCollisionMaskvoid
public void SetCollisionMask(uint mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | uint | — |
SetCollisionMaskValuevoid
public void SetCollisionMaskValue(int layerNumber, bool value);На основе value включает или отключает указанный слой в ShapeCast3D.CollisionMask при заданном layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
SetDebugShapeCustomColorvoid
public void SetDebugShapeCustomColor(Color debugShapeCustomColor);| Имя | Тип | По умолчанию |
|---|---|---|
debugShapeCustomColor | Color | — |
SetEnabledvoid
public void SetEnabled(bool enabled);| Имя | Тип | По умолчанию |
|---|---|---|
enabled | bool | — |
SetExcludeParentBodyvoid
public void SetExcludeParentBody(bool mask);| Имя | Тип | По умолчанию |
|---|---|---|
mask | bool | — |
SetMarginvoid
public void SetMargin(float margin);| Имя | Тип | По умолчанию |
|---|---|---|
margin | float | — |
SetMaxResultsvoid
public void SetMaxResults(int maxResults);| Имя | Тип | По умолчанию |
|---|---|---|
maxResults | int | — |
SetShapevoid
public void SetShape(Shape3D shape);| Имя | Тип | По умолчанию |
|---|---|---|
shape | Shape3D | — |
SetTargetPositionvoid
public void SetTargetPosition(Vector3 localPoint);| Имя | Тип | По умолчанию |
|---|---|---|
localPoint | Vector3 | — |