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

Collider2D.GetShapes

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

声明

public int GetShapes(PhysicsShapeGroup2D physicsShapeGroup);

参数

physicsShapeGroup 用于存储检索到的 PhysicsShape2DPhysicsShapeGroup2D

返回值

int 返回从 Collider2D 检索到的 PhysicsShape2D 的数量。

描述

获取 Collider2D 使用的所有 PhysicsShape2D

所有 Collider2D 表示 2D 几何的高级定义,用于创建物理引擎用于碰撞检测的高效低级基本形状。这些低级基本形状是 Unity 编辑器中 2D 物理 Gizmo 所绘制的内容。此方法提供了对这些基本形状副本的访问权限,这在各种用例中非常有用,例如调试和 Gizmo 或在运行时渲染 Collider2D 几何体。

使用此方法可以访问由 Collider2D 生成的所有低级基本形状的副本。如果 Collider2D 上不存在此类形状(如 Collider2D.shapeCount 所示),则形状组将不会填充形状。如果存在形状,则在填充形状之前先清空该组。

每个 Collider2D 生成一个或多个 PhysicsShape2D,这些形状具有单个 PhysicsShapeType2D,如下所示

所有 Collider2D 形状顶点都存储在其所附加的 Rigidbody2D 的局部空间中,即它们的顶点相对于 Rigidbody2D 的姿态。因此,当 Rigidbody2D 平移或旋转时,附加的 Collider2D 的顶点不会改变。这就是为什么位置或旋转的更改应该始终仅通过 Rigidbody2D 进行,因为这是最有效的方法。检索形状时,形状顶点位于 Rigidbody2D 的局部空间中。 Rigidbody2D 的当前位置和旋转存储在 PhysicsShapeGroup2D.localToWorldMatrix 中,可用于将形状顶点变换到世界空间。如果 Collider2D 未附加到任何 Rigidbody2D(即它是静态的),则局部空间和世界空间相同,因此 PhysicsShapeGroup2D.localToWorldMatrix 设置为 Matrix4x4.identity

注意:建议重用 PhysicsShapeGroup2D,因为这样只有在检索到的形状或顶点数大于 PhysicsShapeGroup2D 的现有容量时才会发生内存分配。因此,重用此对象可以最大限度地减少分配,最终减少到没有分配,因此垃圾回收器不会产生任何工作。

其他资源:Rigidbody2D.GetShapes


声明

public int GetShapes(PhysicsShapeGroup2D physicsShapeGroup, int shapeIndex, int shapeCount = 1);

参数

physicsShapeGroup 用于存储检索到的 PhysicsShape2DPhysicsShapeGroup2D
shapeIndex 要检索的第一个形状的索引。此索引应在 0 到 Collider2D.shapeCount-1 的范围内。
shapeCount 要检索的形状数量。 shapeIndex + shapeCount 必须小于或等于 Collider2D.shapeCount

返回值

int 返回从 Collider2D 检索到的 PhysicsShape2D 的数量。在所有情况下,这都应该与 shapeCount 相同。

描述

获取 Collider2D 使用的 PhysicsShape2D 的指定范围。