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

PhysicsShapeGroup2D.GetShapeData

Declaration

public void GetShapeData(List<PhysicsShape2D> shapes, List<Vector2> vertices);

Параметры

Параметр Описание
формы Список, который будет заполнен копией всех фигур в PhysicsShapeGroup2D.
вершины Список, который будет заполнен копией всех вершин в PhysicsShapeGroup2D.

Описание

Получает копию как фигур, так и вершин в PhysicsShapeGroup2D.

NOTE: Поскольку это копия, изменение указанных списков shapes и vertices впоследствии не изменит списки PhysicsShapeGroup2D.

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Assertions;

public class Example : MonoBehaviour { void Start() { // Create a shape group. var shapeGroup = new PhysicsShapeGroup2D();

// Add a Circle to the shape group. var circleShapeIndex = shapeGroup.AddCircle ( center: new Vector2(-2f, 3f), radius: 1f );

// Add a Capsule to the shape group. var capsuleShapeIndex = shapeGroup.AddCapsule ( vertex0: Vector2.down, vertex1: Vector2.up, radius: 0.5f );

// Validate the contents. Assert.AreEqual(PhysicsShapeType2D.Circle, shapeGroup.GetShape(circleShapeIndex).shapeType); Assert.AreEqual(PhysicsShapeType2D.Capsule, shapeGroup.GetShape(capsuleShapeIndex).shapeType);

// Fetch the shapes and vertices from the shape group. var shapes = new List<PhysicsShape2D>(); var vertices = new List<Vector2>(); shapeGroup.GetShapeData(shapes, vertices);

// Fetch the Circle shape and validate shape and vertex. var circleShape = shapes[circleShapeIndex]; Assert.AreEqual(PhysicsShapeType2D.Circle, circleShape.shapeType); Assert.AreApproximatelyEqual(1f, circleShape.radius); Assert.AreEqual(new Vector2(-2f, 3f), vertices[circleShape.vertexStartIndex]);

// Fetch the Capsule shape and validate shape and vertices (2). var capsuleShape = shapes[capsuleShapeIndex]; Assert.AreEqual(PhysicsShapeType2D.Capsule, capsuleShape.shapeType); Assert.AreApproximatelyEqual(0.5f, capsuleShape.radius); Assert.AreEqual(Vector2.down, vertices[capsuleShape.vertexStartIndex]); Assert.AreEqual(Vector2.up, vertices[capsuleShape.vertexStartIndex + 1]); } }

Declaration

public void GetShapeData(NativeArray<PhysicsShape2D> shapes, NativeArray<Vector2> vertices);

Параметры

Параметр Описание
формы NativeArray, который будет заполнен копией всех фигур в PhysicsShapeGroup2D.
вершины NativeArray, который будет заполнен копией всех вершин в PhysicsShapeGroup2D.

Описание

Получает копию как фигур, так и вершин в PhysicsShapeGroup2D.

NOTE: Поскольку это копия, изменение указанных массивов shapes и vertices впоследствии не изменит массивы PhysicsShapeGroup2D.

using Unity.Collections;
using UnityEngine;
using UnityEngine.Assertions;

public class Example : MonoBehaviour { void Start() { // Create a shape group. var shapeGroup = new PhysicsShapeGroup2D();

// Add a Circle to the shape group. var circleShapeIndex = shapeGroup.AddCircle ( center: new Vector2(-2f, 3f), radius: 1f );

// Add a Capsule to the shape group. var capsuleShapeIndex = shapeGroup.AddCapsule ( vertex0: Vector2.down, vertex1: Vector2.up, radius: 0.5f );

// Validate the contents. Assert.AreEqual(PhysicsShapeType2D.Circle, shapeGroup.GetShape(circleShapeIndex).shapeType); Assert.AreEqual(PhysicsShapeType2D.Capsule, shapeGroup.GetShape(capsuleShapeIndex).shapeType);

// Fetch the shapes and vertices from the shape group. var shapes = new NativeArray<PhysicsShape2D>(shapeGroup.shapeCount, Allocator.Temp); var vertices = new NativeArray<Vector2>(shapeGroup.vertexCount, Allocator.Temp); shapeGroup.GetShapeData(shapes, vertices);

// Fetch the Circle shape and validate shape and vertex. var circleShape = shapes[circleShapeIndex]; Assert.AreEqual(PhysicsShapeType2D.Circle, circleShape.shapeType); Assert.AreApproximatelyEqual(1f, circleShape.radius); Assert.AreEqual(new Vector2(-2f, 3f), vertices[circleShape.vertexStartIndex]);

// Fetch the Capsule shape and validate shape and vertices (2). var capsuleShape = shapes[capsuleShapeIndex]; Assert.AreEqual(PhysicsShapeType2D.Capsule, capsuleShape.shapeType); Assert.AreApproximatelyEqual(0.5f, capsuleShape.radius); Assert.AreEqual(Vector2.down, vertices[capsuleShape.vertexStartIndex]); Assert.AreEqual(Vector2.up, vertices[capsuleShape.vertexStartIndex + 1]);

// Dispose of the native arrays. vertices.Dispose(); shapes.Dispose(); } }