ShapeCast2D
Двумерная фигура, которая прочесывает область пространства для обнаружения CollisionObject2D.
Двумерная фигура, которая прочесывает область пространства для обнаружения CollisionObject2D.
Приведение формы позволяет обнаруживать объекты столкновения, перемещая его ShapeCast2D.Shape вдоль направления приведения, определяемого ShapeCast2D.TargetPosition. Это похоже на RayCast2D, но позволяет перемещать область пространства, а не просто прямую линию. ShapeCast2D может обнаруживать несколько объектов столкновения. Это полезно для таких вещей, как широкие лазерные лучи или привязка простой формы к полу.
Немедленное перекрытие столкновений можно выполнить, установив ShapeCast2D.TargetPosition на Vector2(0, 0) и вызвав ShapeCast2D.ForceShapecastUpdate в том же физическом кадре. Это помогает преодолеть некоторые ограничения Area2D при использовании в качестве мгновенной области обнаружения, поскольку информация о столкновении не сразу доступна ему.
Примечание: Приведение формы требует больших вычислительных затрат, чем приведение лучей.
Объявления сверены с C# SDK 1.0.0. Раскройте имя, чтобы увидеть сигнатуры и описание.
Конструкторы1
ShapeCast2DКонструктор
public ShapeCast2D();Свойства10
CollideWithAreasСвойство
public bool CollideWithAreas { get; set; }Если true, будут сообщаться столкновения с Area2D.
CollideWithBodiesСвойство
public bool CollideWithBodies { get; set; }Если true, будут сообщаться столкновения с PhysicsBody2D.
CollisionMaskСвойство
public uint CollisionMask { get; set; }Маска столкновения формы. Будут обнаружены только те объекты, находящиеся хотя бы в одном из слое столкновения, включенном в маске. Для получения дополнительной информации см. Слои и маски столкновения в документации.
CollisionResultСвойство
public Reckfell.Collections.Array CollisionResult { get; }Возвращает полную информацию о столкновениях из столкновительного развертки. Возвращаемые данные такие же, как в методе PhysicsDirectSpaceState2D.GetRestInfo.
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 Shape2D Shape { get; set; }Форма, которая будет использоваться для запросов на столкновение.
TargetPositionСвойство
public Vector2 TargetPosition { get; set; }Точка назначения фигуры относительно Entity2D.Position этого узла.
Методы36
AddExceptionvoid
public void AddException(CollisionObject2D node);Добавляет исключение столкновений, чтобы фигура не сообщала о столкновениях с указанным узлом.
| Имя | Тип | По умолчанию |
|---|---|---|
node | CollisionObject2D | — |
AddExceptionRidvoid
public void AddExceptionRid(Rid rid);Добавляет исключение столкновений, чтобы фигура не сообщала о столкновениях с указанным Rid.
| Имя | Тип | По умолчанию |
|---|---|---|
rid | Rid | — |
ClearExceptionsvoid
public void ClearExceptions();Удаляет все исключения столкновений для этой фигуры.
ForceShapecastUpdatevoid
public void ForceShapecastUpdate();Обновляет информацию о столкновении для фигуры немедленно, не дожидаясь следующего вызова _physics_process. Используйте этот метод, например, когда фигура или ее родительский элемент изменили состояние.
Примечание: Установка ShapeCast2D.Enabled на true не требуется для работы этого.
GetClosestCollisionSafeFractionfloat
public float GetClosestCollisionSafeFraction();Возвращает долю от начала этого приведения до его ShapeCast2D.TargetPosition того, насколько далеко может переместиться фигура, не вызывая столкновения, в виде значения между 0.0 и 1.0.
floatGetClosestCollisionUnsafeFractionfloat
public float GetClosestCollisionUnsafeFraction();Возвращает долю от начала этого приведения до его ShapeCast2D.TargetPosition того, как далеко должна переместиться фигура, чтобы вызвать столкновение, как значение между 0.0 и 1.0.
В идеальных условиях это было бы то же самое, что и ShapeCast2D.GetClosestCollisionSafeFraction, однако приведение фигуры вычисляется дискретными шагами, поэтому точная точка столкновения может находиться между двумя вычисленными позициями.
floatGetColliderReckfellObject
public ReckfellObject GetCollider(int index);Возвращает столкнувшийся ReckfellObject одного из нескольких столкновений в index или null, если ни один объект не пересекает фигуру (т. е. ShapeCast2D.IsColliding возвращает false).
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
ReckfellObjectGetColliderRidRid
public Rid GetColliderRid(int index);Возвращает Rid столкнувшегося объекта одного из нескольких столкновений в index.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
RidGetColliderShapeint
public int GetColliderShape(int index);Возвращает идентификатор сталкивающейся фигуры одного из нескольких столкновений в index или 0, если ни один объект не пересекает фигуру (т.е. ShapeCast2D.IsColliding возвращает false).
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
intGetCollisionCountint
public int GetCollisionCount();Количество столкновений, обнаруженных в точке удара. Используйте это для итерации по нескольким столкновениям, как предусмотрено методами ShapeCast2D.GetCollider, ShapeCast2D.GetColliderShape, ShapeCast2D.GetCollisionPoint и ShapeCast2D.GetCollisionNormal.
intGetCollisionMaskuint
public uint GetCollisionMask();uintGetCollisionMaskValuebool
public bool GetCollisionMaskValue(int layerNumber);Возвращает, включен ли указанный слой ShapeCast2D.CollisionMask, учитывая layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
boolGetCollisionNormalVector2
public Vector2 GetCollisionNormal(int index);Возвращает нормаль одного из нескольких столкновений в точке index пересекающегося объекта.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
Vector2GetCollisionPointVector2
public Vector2 GetCollisionPoint(int index);Возвращает точку столкновения одного из нескольких столкновений в index, где фигура пересекает сталкивающийся объект.
Примечание: Эта точка находится в глобальной системе координат.
| Имя | Тип | По умолчанию |
|---|---|---|
index | int | — |
Vector2GetCollisionResultReckfell.Collections.Array
public Reckfell.Collections.Array GetCollisionResult();Reckfell.Collections.ArrayGetExcludeParentBodybool
public bool GetExcludeParentBody();boolGetMarginfloat
public float GetMargin();floatGetMaxResultsint
public int GetMaxResults();intGetShapeShape2D
public Shape2D GetShape();Shape2DGetTargetPositionVector2
public Vector2 GetTargetPosition();Vector2IsCollideWithAreasEnabledbool
public bool IsCollideWithAreasEnabled();boolIsCollideWithBodiesEnabledbool
public bool IsCollideWithBodiesEnabled();boolIsCollidingbool
public bool IsColliding();Возвращает, пересекается ли какой-либо объект с вектором фигуры (с учетом длины вектора).
boolIsEnabledbool
public bool IsEnabled();boolRemoveExceptionvoid
public void RemoveException(CollisionObject2D node);Удаляет исключение столкновения, чтобы фигура не сообщала о столкновениях с указанным узлом.
| Имя | Тип | По умолчанию |
|---|---|---|
node | CollisionObject2D | — |
RemoveExceptionRidvoid
public void RemoveExceptionRid(Rid rid);Удаляет исключение столкновения, чтобы фигура не сообщала о столкновениях с указанным Rid.
| Имя | Тип | По умолчанию |
|---|---|---|
rid | Rid | — |
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 включает или отключает указанный слой в ShapeCast2D.CollisionMask при заданном layer_number от 1 до 32.
| Имя | Тип | По умолчанию |
|---|---|---|
layerNumber | int | — |
value | bool | — |
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(Shape2D shape);| Имя | Тип | По умолчанию |
|---|---|---|
shape | Shape2D | — |
SetTargetPositionvoid
public void SetTargetPosition(Vector2 localPoint);| Имя | Тип | По умолчанию |
|---|---|---|
localPoint | Vector2 | — |