Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

ConvexPolygonShape2D

继承: Shape2D < Resource < RefCounted < Object

用于物理碰撞的 2D 凸多边形形状。

描述

2D 凸多边形形状,旨在用于物理。CollisionPolygon2DCollisionPolygon2D.BUILD_SOLIDS 模式时内部会使用这个类。

ConvexPolygonShape2D实心的,与空心的 ConcavePolygonShape2D 不同,如果对象完全位于其内部,也能够检测到碰撞。因此更适于检测和物理。

凸分解:凹多边形可以拆分为多个凸多边形。这样就能够让动态物理体拥有复杂的凹碰撞(以消耗性能为代价),做法是使用多个 ConvexPolygonShape3D 节点,或者使用 CollisionPolygon2D.BUILD_SOLIDS 模式的 CollisionPolygon2D 节点。要根据精灵生成碰撞多边形,请选中 Sprite2D 节点,前往出现在视口上方的 Sprite2D 菜单,然后选择创建 Polygon2D 同级

性能:ConvexPolygonShape2D 检查碰撞的速度比 ConcavePolygonShape2D 要快,但比 CircleShape2DRectangleShape2D 等基本碰撞形状要慢。通常应该仅限于中等大小的对象,在无法使用基本形状精确表示碰撞时使用。

属性

PackedVector2Array

points

PackedVector2Array()

方法

void

set_point_cloud ( PackedVector2Array point_cloud )


属性说明

PackedVector2Array points = PackedVector2Array()

该多边形构成凸包的顶点列表。顺时针顺序或逆时针顺序都有可能。

警告:请务必将这个属性设置为能够形成凸包的顶点列表。可以使用 set_point_cloud 从任意顶点集生成凸包。


方法说明

void set_point_cloud ( PackedVector2Array point_cloud )

根据提供的点集,使用凸包算法分配 points 属性,移除所有不必要的点。详见 Geometry2D.convex_hull