AddCircle(Vector2, float)
Adds a circle shape ( PhysicsShapeType2D.Circle ) to the shape group.
Read time 2 minutesLast updated 4 days ago
Definition
- Type: Method
- Namespace: UnityEngine
- Assembly: UnityEngine.Physics2DModule
public int AddCircle(Vector2 center, float radius)
Parameters
Returns
Type | Description |
|---|---|
| int | Returns the shape index the shape was added to in the PhysicsShapeGroup2D. This index is used as the main reference when retrieving a shape. |
Remarks
A circle shape is comprised of a single vertex (center ) and a that extends around that vertex. This is the most memory efficient and fastest primitive to use in all use-cases.
radiusNOTE: A circle forms a closed shape and does have an interior therefore its interior is detectable by physics queries etc.
Examples
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 Circle. var shapeIndex = shapeGroup.AddCircle ( center: new Vector2(-2f, 3f), radius: 1f ); // Fetch the actual shape created. var physicsShape = shapeGroup.GetShape(shapeIndex); // Validate what we created. Assert.AreEqual(PhysicsShapeType2D.Circle, physicsShape.shapeType); Assert.AreApproximatelyEqual(1f, physicsShape.radius); Assert.AreEqual(1, physicsShape.vertexCount); } // Get a physics shape from a Collider. void GetShapeFromCollider() { // Fetch the collider. var collider = GetComponent<CircleCollider2D>(); // 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.radius = 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.Circle, physicsShape.shapeType); Assert.AreApproximatelyEqual(1f, physicsShape.radius); Assert.AreEqual(1, physicsShape.vertexCount); }}