Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


AddBox(Vector2, Vector2, float, float)

Adds a box shape ( PhysicsShapeType2D.Polygon ) to the shape group.
Read time 2 minutesLast updated 7 days ago

Definition

  • Type: Method
  • Namespace: UnityEngine
  • Assembly: UnityEngine.Physics2DModule
public int AddBox(Vector2 center, Vector2 size, float angle = 0, float edgeRadius = 0)

Parameters

center

The center point of the box shape. This is analogous to _offset.

The size of the box. This is identical to _size.

angle

The angle in degrees the box should be rotated around the
center
.

edgeRadius

The radius extending around the edges of the box. This is identical to _edgeRadius.

Returns

Type

Description

intReturns 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 box shape is a form of convex polygon with four vertices and an
edgeRadius
that extends around the four edges. The ability to add a box shape is a convenience only and does not represent an actual primitive shape.
NOTE: A box 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 Box (polygon with four vertices). // NOTE: Both the angle and edgeRadius arguments are optional. var shapeIndex = shapeGroup.AddBox ( center: new Vector2(3f, 2f), size: new Vector2(1f, 1f), angle: 0f, edgeRadius: 0f ); // Fetch the actual shape created. var physicsShape = shapeGroup.GetShape(shapeIndex); // Validate what we created. Assert.AreEqual(PhysicsShapeType2D.Polygon, physicsShape.shapeType); Assert.AreEqual(4, physicsShape.vertexCount); Assert.AreApproximatelyEqual(0f, physicsShape.radius); } // Get a physics shape from a Collider. void GetShapeFromCollider() { // Fetch the collider. var collider = GetComponent<BoxCollider2D>(); // 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.offset = new Vector2(3f, 2f); collider.size = new Vector2(1f, 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.Polygon, physicsShape.shapeType); Assert.AreEqual(4, physicsShape.vertexCount); }}