PhysicsShapeGroup2D.AddPolygon
Declaration
public int AddPolygon(List<Vector2> vertices);Параметры
| Параметр | Описание |
|---|---|
| вершины | Список вершин, представляющих непрерывное множество рёбер выпуклого многоугольника, где каждая вершина соединяется со следующей вершиной, образуя каждое ребро. Последняя вершина косвенно соединяется с первой вершиной. Максимально допустимая длина списка определяется Physics2D.MaxPolygonShapeVertices. |
Возвращаемое значение
инт Возвращает индекс формы, в которую фигура была добавлена в PhysicsShapeGroup2D. Этот индекс используется в качестве главной ссылки при получении фигуры.
Описание
Добавление многоугольной формы (PhysicsShapeType2D.Polygon) в группу форм.
Форма многоугольника состоит из нескольких рёбер (отрезков линии), определенных всеми указанными vertices.
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 Polygon. var shapeIndex = shapeGroup.AddPolygon ( vertices: new List<Vector2> { new Vector2(-1f, -1f), new Vector2(1f, -1f), new Vector2(1f, 1f), new Vector2(-1f, 1f) } );
// Fetch the actual shape created. var physicsShape = shapeGroup.GetShape(shapeIndex);
// Validate what we created. Assert.AreEqual(PhysicsShapeType2D.Polygon, physicsShape.shapeType); Assert.AreEqual(4, physicsShape.vertexCount); }
// Get a physics shape from a Collider. void GetShapeFromCollider() { // Fetch the collider. var collider = GetComponent<PolygonCollider2D>();
// 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.SetPath(0, new List<Vector2>() { new Vector2(-1f, -1f), new Vector2(1f, -1f), new Vector2(1f, 1f), new Vector2(-1f, 1f) });
// 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.Polygon, physicsShape.shapeType); Assert.AreEqual(4, physicsShape.vertexCount); } }