版本:Unity 6(6000.0)
语言简体中文
  • C#

PhysicsShapeGroup2D.AddCircle

建议修改

完成!

感谢您帮助我们提高 Unity 文档质量。虽然我们无法采纳所有建议,但我们确实会阅读每位用户提出的建议,并在适用时进行更新。

关闭

提交失败

出于某种原因,无法提交您提出的建议。请在几分钟内<a>重试</a>。感谢您花时间帮助我们提高 Unity 文档质量。

关闭

取消

声明

public int AddCircle(Vector2 center, float radius);

参数

center 圆形形状的中心点。这类似于 Collider2D.offset
radius center 为中心,在周围定义半径的圆的半径。这与 CircleCollider2D.radius 相同。

返回值

int 返回形状在 PhysicsShapeGroup2D 中被添加到的形状索引。检索形状时,此索引用作主要引用。

说明

向形状组添加一个圆形(PhysicsShapeType2D.Circle)。

圆形由一个顶点(center)和一个围绕该顶点延伸的 radius 组成。这是在所有用例中使用时效率最高、内存占用最少的基元。

注意:圆形成一个闭合形状,并且有一个内部,因此物理查询等可以检测到其内部。

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