CustomCollider2D.GetCustomShapes
Declaration
public int GetCustomShapes(PhysicsShapeGroup2D physicsShapeGroup);Параметры
| Параметр | Описание |
|---|---|
| physicsShapeGroup | Группа физических форм, которые будут получать все Физика формы и vertices от Collider. |
Возвращаемое значение
инт Возвращает общее количество физических фигур, помещенных в указанном physicsShapeGroup.
Описание
Получает все физические формы и вершины в Collider и помещает их в указанные PhysicsShapeGroup2D.
using UnityEngine; using UnityEngine.Assertions;
public class Example : MonoBehaviour { void Start() { // Fetch the custom collider. var customCollider = GetComponent<CustomCollider2D>();
// Create an input shape group. var inputShapeGroup = new PhysicsShapeGroup2D();
// Add 5 Circles to the shape group. inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.5f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.6f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.7f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.8f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.9f);
// Assign our shapes. customCollider.SetCustomShapes(inputShapeGroup);
// Validate the contents of the custom collider. Assert.AreEqual(5, customCollider.customShapeCount);
// Create an output shape group. var outputShapeGroup = new PhysicsShapeGroup2D();
// Get all the custom shapes. var shapeCount = customCollider.GetCustomShapes(outputShapeGroup);
// Validate the results. Assert.AreEqual(5, shapeCount); Assert.AreEqual(5, outputShapeGroup.shapeCount); Assert.AreApproximatelyEqual(0.5f, outputShapeGroup.GetShape(shapeIndex: 0).radius); Assert.AreApproximatelyEqual(0.6f, outputShapeGroup.GetShape(shapeIndex: 1).radius); Assert.AreApproximatelyEqual(0.7f, outputShapeGroup.GetShape(shapeIndex: 2).radius); Assert.AreApproximatelyEqual(0.8f, outputShapeGroup.GetShape(shapeIndex: 3).radius); Assert.AreApproximatelyEqual(0.9f, outputShapeGroup.GetShape(shapeIndex: 4).radius); } }
Declaration
public int GetCustomShapes(PhysicsShapeGroup2D physicsShapeGroup, int shapeIndex, int shapeCount = 1);Параметры
| Параметр | Описание |
|---|---|
| physicsShapeGroup | Группа физических форм, которые будут получать Физика формы и vertices от Collider. |
| shapeIndex | Индекс формы в Collider, из которого начнется поиск форм. |
| shapeCount | Общее число форм, начиная с shapeIndex для получения. |
Возвращаемое значение
инт Общее количество физических фигур, размещенных в указанном physicsShapeGroup.
Описание
Получает указанное число физических форм, определенныхshapeCount, начиная с shapeIndex вместе со всеми связанными вершинами, которые используют эти формы, и помещает их в указанные PhysicsShapeGroup2D.
using UnityEngine; using UnityEngine.Assertions;
public class Example : MonoBehaviour { void Start() { // Fetch the custom collider. var customCollider = GetComponent<CustomCollider2D>();
// Create an input shape group. var inputShapeGroup = new PhysicsShapeGroup2D();
// Add 5 Circles to the shape group. inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.5f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.6f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.7f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.8f); inputShapeGroup.AddCircle(center: Vector2.zero, radius: 0.9f);
// Assign our shapes. customCollider.SetCustomShapes(inputShapeGroup);
// Validate the contents of the custom collider. Assert.AreEqual(5, customCollider.customShapeCount);
// Create an output shape group. var outputShapeGroup = new PhysicsShapeGroup2D();
// Get the last 3 custom shapes. var shapeCount = customCollider.GetCustomShapes(outputShapeGroup, shapeIndex: 2, shapeCount: 3);
// Validate the results. Assert.AreEqual(3, shapeCount); Assert.AreEqual(3, outputShapeGroup.shapeCount); Assert.AreApproximatelyEqual(0.7f, outputShapeGroup.GetShape(shapeIndex: 0).radius); Assert.AreApproximatelyEqual(0.8f, outputShapeGroup.GetShape(shapeIndex: 1).radius); Assert.AreApproximatelyEqual(0.9f, outputShapeGroup.GetShape(shapeIndex: 2).radius); } }
Declaration
public int GetCustomShapes(NativeArray<PhysicsShape2D> shapes, NativeArray<Vector2> vertices);Параметры
| Параметр | Описание |
|---|---|
| формы | Массив, который будет заполнен копией всех форм в PhysicsShapeGroup2D. |
| вершины | Массив, который будет заполнен копией всех вершин в PhysicsShapeGroup2D. |
Возвращаемое значение
инт Возвращает общее количество Физика формы помещается в указанные массивы.
Описание
Получает все физические формы и вершины в Collider и помещает их в указанные массивы.
using Unity.Collections; using UnityEngine; using UnityEngine.Assertions;
public class Example : MonoBehaviour { void Start() { // Fetch the custom collider. var customCollider = GetComponent<CustomCollider2D>();
// Create an input shape group. var inputShapeGroup = new PhysicsShapeGroup2D();
// Add 5 Circles to the shape group. inputShapeGroup.AddCircle(center: new Vector2(3f, 8f), radius: 0.5f); inputShapeGroup.AddCircle(center: new Vector2(6f, 3f), radius: 0.6f); inputShapeGroup.AddCircle(center: new Vector2(2f, 5f), radius: 0.7f); inputShapeGroup.AddCircle(center: new Vector2(9f, 2f), radius: 0.8f); inputShapeGroup.AddCircle(center: new Vector2(1f, 7f), radius: 0.9f);
// Assign our shapes. customCollider.SetCustomShapes(inputShapeGroup);
// Validate the contents of the custom collider. Assert.AreEqual(5, customCollider.customShapeCount);
// Get all the custom shapes. var shapes = new NativeArray<PhysicsShape2D>(customCollider.customShapeCount, Allocator.Temp); var vertices = new NativeArray<Vector2>(customCollider.customVertexCount, Allocator.Temp); var shapeCount = customCollider.GetCustomShapes(shapes, vertices);
// Validate the shapes. Assert.AreEqual(5, shapeCount); Assert.AreApproximatelyEqual(0.5f, shapes[0].radius); Assert.AreApproximatelyEqual(0.6f, shapes[1].radius); Assert.AreApproximatelyEqual(0.7f, shapes[2].radius); Assert.AreApproximatelyEqual(0.8f, shapes[3].radius); Assert.AreApproximatelyEqual(0.9f, shapes[4].radius);
// Validate the vertices. Assert.AreEqual(new Vector2(3f, 8f), vertices[0]); Assert.AreEqual(new Vector2(6f, 3f), vertices[1]); Assert.AreEqual(new Vector2(2f, 5f), vertices[2]); Assert.AreEqual(new Vector2(9f, 2f), vertices[3]); Assert.AreEqual(new Vector2(1f, 7f), vertices[4]);
// Dispose of the native arrays. vertices.Dispose(); shapes.Dispose(); } }