vertices | 代表一组连续边的顶点列表,每个顶点连接到下一个顶点形成每条边。 |
edgeRadius | 围绕每条边延伸的半径。这与 EdgeCollider2D.edgeRadius 相同。 |
int 返回形状添加到 PhysicsShapeGroup2D 中的形状索引。此索引用作检索形状时的主要参考。
向形状组添加边形状 (PhysicsShapeType2D.Edges)。
边形状由多个边(线段)组成,这些边由所有指定的 vertices
和围绕所有边延伸的 edgeRadius
定义。
注意:边不会形成封闭形状,因为它们没有内部,即使第一个和最后一个顶点重叠,因此物理查询等无法检测到逻辑内部。
using System; using System.Collections.Generic; 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 list of Edges. var shapeIndex = shapeGroup.AddEdges ( vertices: new List<Vector2> { new Vector2(-4f, 0f), new Vector2(-2f, -0.5f), new Vector2(0f, 0f), new Vector2(2f, -0.5f), new Vector2(4f, 0f), }, edgeRadius: 0.5f );
// Fetch the actual shape created. var physicsShape = shapeGroup.GetShape(shapeIndex);
// Validate what we created. Assert.AreEqual(PhysicsShapeType2D.Edges, physicsShape.shapeType); Assert.AreApproximatelyEqual(0.5f, physicsShape.radius); Assert.AreEqual(5, physicsShape.vertexCount); }
// Get a physics shape from a Collider. void GetShapeFromCollider() { // Fetch the collider. var collider = GetComponent<EdgeCollider2D>();
// 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.SetPoints( new List<Vector2>() { new Vector2(-4f, 0f), new Vector2(-2f, -0.5f), new Vector2(0f, 0f), new Vector2(2f, -0.5f), new Vector2(4f, 0f), }); collider.edgeRadius = 0.5f;
// 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.Edges, physicsShape.shapeType); Assert.AreApproximatelyEqual(0.5f, physicsShape.radius); Assert.AreEqual(5, physicsShape.vertexCount); } }
vertices | 代表一组连续边的顶点列表,每个顶点连接到下一个顶点形成每条边。 |
edgeRadius | 围绕每条边延伸的半径。这与 EdgeCollider2D.edgeRadius 相同。 |
useAdjacentStart | 当值为真时,使用 adjacentStart 参数。当值为假时,不使用 adjacentStart 参数。 |
useAdjacentEnd | 当值为真时,使用 adjacentEnd 参数。当值为假时,不使用 adjacentEnd 参数。 |
adjacentStart | 定义边形状起点顶点相邻虚拟点的坐标。 |
adjacentEnd | 定义边形状终点顶点相邻虚拟点的坐标。 |
int 返回形状添加到 PhysicsShapeGroup2D 中的形状索引。此索引用作检索形状时的主要参考。
向形状组添加边形状 (PhysicsShapeType2D.Edges),支持相邻的起点和终点顶点。
边形状由多个边(线段)组成,这些边由所有指定的 vertices
和围绕所有边延伸的 edgeRadius
定义。
注意:边不会形成封闭形状,因为它们没有内部,即使第一个和最后一个顶点重叠,因此物理查询等无法检测到逻辑内部。