Unity 6.3
0 онлайн 80 гостей 3 в системе
Вход

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(); } }