int 返回放置在指定physicsShapeGroup
中的物理形状的总数。
获取碰撞器中的所有物理形状和顶点,并将它们放置在指定的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); } }
physicsShapeGroup | 将接收来自碰撞器的物理形状和顶点的物理形状组。 |
shapeIndex | 在其中开始检索形状的碰撞器内的形状索引。 |
shapeCount | 从shapeIndex 开始检索的形状总数。 |
int 放置在指定physicsShapeGroup
中的物理形状的总数。
从shapeIndex
开始获取由shapeCount
定义的指定数量的物理形状以及这些形状使用且放置在指定的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); } }
shapes | 将填充有PhysicsShapeGroup2D中所有形状的副本的数组。 |
vertices | 将使用 PhysicsShapeGroup2D 中的所有顶点的副本填充数组。 |
int 返回置于指定数组中的 物理形状 的总数。
获取碰撞器中的所有物理形状和顶点,并将其置于指定的数组中。
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(); } }