PhysicsShapeGroup2D.AddEdges
Declaration
public int AddEdges(List<Vector2> vertices, float edgeRadius = 0f);Параметры
| Параметр | Описание |
|---|---|
| вершины | Список вершин, которые представляют непрерывное множество рёбер с каждой вершиной, соединяющейся со следующей вершиной, чтобы образовать каждое ребро. |
| edgeRadius | Радиус, простирающийся вокруг каждого края. Это идентично EdgeCollider2D.edgeRadius. |
Возвращаемое значение
инт Возвращает индекс формы, в которую фигура была добавлена в PhysicsShapeGroup2D. Этот индекс используется в качестве главной ссылки при получении фигуры.
Описание
Добавляет фигуру краев (PhysicsShapeType2D.Edges) в группу фигур.
Форма ребра состоит из нескольких рёбер (отрезков линии), определенных всеми указанными vertices и edgeRadius, который простирается вокруг всех edge(s).
NOTE: Ребра не образуют закрытую форму, поскольку они не имеют внутреннего пространства, даже если первая и последняя вершины перекрываются, поэтому логическое внутреннее пространство не обнаруживается физическими запросами и т.д.
using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Assertions;
public class Example : MonoBehaviour { void Start() { CreateShape(); GetShapeFromCollider(); }
// Create a custom shape. void CreateShape() { // Create a shape group. var shapeGroup = new PhysicsShapeGroup2D();
// Add a list of Edges. var shapeIndex = shapeGroup.AddEdges ( vertices: new List<Vector2> { new Vector2(-4f, 0f), new Vector2(-2f, -0.5f), new Vector2(0f, 0f), new Vector2(2f, -0.5f), new Vector2(4f, 0f), }, edgeRadius: 0.5f );
// Fetch the actual shape created. var physicsShape = shapeGroup.GetShape(shapeIndex);
// Validate what we created. Assert.AreEqual(PhysicsShapeType2D.Edges, physicsShape.shapeType); Assert.AreApproximatelyEqual(0.5f, physicsShape.radius); Assert.AreEqual(5, physicsShape.vertexCount); }
// Get a physics shape from a Collider. void GetShapeFromCollider() { // Fetch the collider. var collider = GetComponent<EdgeCollider2D>();
// If the collider is not active and enabled then we'll get no shapes. // Let's just quit if not. if (!collider.isActiveAndEnabled) return;
// Configure the collider. collider.SetPoints( new List<Vector2>() { new Vector2(-4f, 0f), new Vector2(-2f, -0.5f), new Vector2(0f, 0f), new Vector2(2f, -0.5f), new Vector2(4f, 0f), }); collider.edgeRadius = 0.5f;
// Create a shape group. var shapeGroup = new PhysicsShapeGroup2D();
// Get the collider shapes. collider.GetShapes(shapeGroup);
// Fetch the actual shape. var physicsShape = shapeGroup.GetShape(0);
// Validate what we retrieved. Assert.AreEqual(PhysicsShapeType2D.Edges, physicsShape.shapeType); Assert.AreApproximatelyEqual(0.5f, physicsShape.radius); Assert.AreEqual(5, physicsShape.vertexCount); } }
Declaration
public int AddEdges(List<Vector2> vertices, bool useAdjacentStart, bool useAdjacentEnd, Vector2 adjacentStart, Vector2 adjacentEnd, float edgeRadius = 0f);Параметры
| Параметр | Описание |
|---|---|
| вершины | Список вершин, которые представляют непрерывное множество рёбер с каждой вершиной, соединяющейся со следующей вершиной, чтобы образовать каждое ребро. |
| edgeRadius | Радиус, простирающийся вокруг каждого края. Это идентично EdgeCollider2D.edgeRadius. |
| useAdjacentStart | Если значение равно истине, используется аргумент adjacentStart. Если значение равно лжи, аргумент adjacentStart не используется. |
| useAdjacentEnd | Если значение равно истине, используется аргумент adjacentEnd. Если значение равно лжи, аргумент adjacentEnd не используется. |
| adjacentStart | Определяет положение виртуальной точки, примыкающей к начальной вершине краевой формы. |
| adjacentEnd | Определяет положение виртуальной точки, примыкающей к конечной вершине краевой формы. |
Возвращаемое значение
инт Возвращает индекс формы, в которую фигура была добавлена в PhysicsShapeGroup2D. Этот индекс используется в качестве главной ссылки при получении фигуры.
Описание
Добавление рёбра (PhysicsShapeType2D.Edges) в группу фигур, поддерживающую смежные вершины начала и конца.
Форма рёбер состоит из нескольких рёбер (отрезков линии), определенных всеми указанными vertices и edgeRadius, который простирается вокруг всех edge(s).
NOTE: Рёбра не образуют закрытую форму, так как они не имеют внутреннего пространства, даже если первая и последняя вершины перекрываются, поэтому логическое внутреннее пространство не обнаруживается физическими запросами и т.д.