版本: Unity 6 (6000.0)
语言英语
  • C#

PhysicsShapeGroup2D.AddEdges

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们不能接受所有提交的内容,但我们确实会阅读用户提出的每个建议更改,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请 <a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public int AddEdges(List<Vector2> vertices, float edgeRadius = 0f);

参数

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

声明

public int AddEdges(List<Vector2> vertices, bool useAdjacentStart, bool useAdjacentEnd, Vector2 adjacentStart, Vector2 adjacentEnd, float edgeRadius = 0f);

参数

vertices 代表一组连续边的顶点列表,每个顶点连接到下一个顶点形成每条边。
edgeRadius 围绕每条边延伸的半径。这与 EdgeCollider2D.edgeRadius 相同。
useAdjacentStart 当值为真时,使用 adjacentStart 参数。当值为假时,不使用 adjacentStart 参数。
useAdjacentEnd 当值为真时,使用 adjacentEnd 参数。当值为假时,不使用 adjacentEnd 参数。
adjacentStart 定义边形状起点顶点相邻虚拟点的坐标。
adjacentEnd 定义边形状终点顶点相邻虚拟点的坐标。

返回值

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

描述

向形状组添加边形状 (PhysicsShapeType2D.Edges),支持相邻的起点和终点顶点。

边形状由多个边(线段)组成,这些边由所有指定的 vertices 和围绕所有边延伸的 edgeRadius 定义。

注意:边不会形成封闭形状,因为它们没有内部,即使第一个和最后一个顶点重叠,因此物理查询等无法检测到逻辑内部。