Up to date

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

CollisionPolygon2D

继承: Node2D < CanvasItem < Node < Object

CollisionObject2D 父级提供多边形形状的节点。

描述

一个节点,为 CollisionObject2D 父级提供加厚多边形形状(角柱体)并允许对其进行编辑。该多边形可以是凹的或凸的。这可以为 Area2D 提供检测形状,也能够将 PhysicsBody2D 转变为实体对象。

警告:非均匀缩放的 CollisionShape2D 可能不会按预期运行。可改为确保在所有轴上保持其缩放相同,并调整其形状资源。

属性

BuildMode

build_mode

0

bool

disabled

false

bool

one_way_collision

false

float

one_way_collision_margin

1.0

PackedVector2Array

polygon

PackedVector2Array()


枚举

enum BuildMode:

BuildMode BUILD_SOLIDS = 0

碰撞包含多边形及其内部区域。在这个模式下,该节点的效果与使用若干 ConvexPolygonShape2D 节点相同,其中的每个节点都包含该多边形凸分解后的凸形状(但不会有使用多个节点的负担)。

BuildMode BUILD_SEGMENTS = 1

碰撞经包含多边形的边缘。在这个模式下,该节点的效果与单个由若干线段组成的 ConcavePolygonShape2D 相同,其中(第一条以后的)每条线段都从上一条的终点开始,最后一条线段在第一条的起点结束(构成闭合但中空的多边形)。


属性说明

BuildMode build_mode = 0

碰撞构建模式。使用 BuildMode 常量之一。


bool disabled = false

  • void set_disabled ( bool value )

  • bool is_disabled ( )

如果为 true,则不会检测到碰撞。


bool one_way_collision = false

  • void set_one_way_collision ( bool value )

  • bool is_one_way_collision_enabled ( )

如果为 true,则只有面朝上的边缘才会与其他对象发生碰撞,方向是相对于 CollisionPolygon2D 的旋转而言的。

注意:如果这个 CollisionPolygon2DArea2D 节点的子节点,则这个属性无效。


float one_way_collision_margin = 1.0

  • void set_one_way_collision_margin ( float value )

  • float get_one_way_collision_margin ( )

用于单向碰撞的边距(以像素为单位)。较高的值将使形状更厚,并且对于以高速进入多边形的对撞机来说效果更好。


PackedVector2Array polygon = PackedVector2Array()

该多边形的顶点列表。每个点都与下一个点相连,最后一个点与第一个点相连。

注意:返回的顶点位于给定的 CollisionPolygon2D 的局部坐标空间中。

警告:返回值是 PackedVector2Array 的副本,不是引用。