Up to date

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

CollisionPolygon2D

Inherits: Node2D < CanvasItem < Node < Object

Node that represents a 2D collision polygon.

Description

Provides a 2D collision polygon to a CollisionObject2D parent. Polygons can be drawn in the editor or specified by a list of vertices.

Depending on the build mode, this node effectively provides several convex shapes (by convex decomposition of the polygon) or a single concave shape made of the polygon's segments.

In the editor, a CollisionPolygon2D can be generated from a Sprite2D's outline by selecting a Sprite2D node, going to the Sprite2D menu at the top of the 2D editor viewport then choosing Create CollisionPolygon2D Sibling.

Properties

BuildMode

build_mode

0

bool

disabled

false

bool

one_way_collision

false

float

one_way_collision_margin

1.0

PackedVector2Array

polygon

PackedVector2Array()


Enumerations

enum BuildMode:

BuildMode BUILD_SOLIDS = 0

Collisions will include the polygon and its contained area. In this mode the node has the same effect as several ConvexPolygonShape2D nodes, one for each convex shape in the convex decomposition of the polygon (but without the overhead of multiple nodes).

BuildMode BUILD_SEGMENTS = 1

Collisions will only include the polygon edges. In this mode the node has the same effect as a single ConcavePolygonShape2D made of segments, with the restriction that each segment (after the first one) starts where the previous one ends, and the last one ends where the first one starts (forming a closed but hollow polygon).


Property Descriptions

BuildMode build_mode = 0

Collision build mode. Use one of the BuildMode constants.


bool disabled = false

  • void set_disabled ( bool value )

  • bool is_disabled ( )

If true, no collisions will be detected.


bool one_way_collision = false

  • void set_one_way_collision ( bool value )

  • bool is_one_way_collision_enabled ( )

If true, only edges that face up, relative to CollisionPolygon2D's rotation, will collide with other objects.

Note: This property has no effect if this CollisionPolygon2D is a child of an Area2D node.


float one_way_collision_margin = 1.0

  • void set_one_way_collision_margin ( float value )

  • float get_one_way_collision_margin ( )

The margin used for one-way collision (in pixels). Higher values will make the shape thicker, and work better for colliders that enter the polygon at a high velocity.


PackedVector2Array polygon = PackedVector2Array()

The polygon's list of vertices. Each point will be connected to the next, and the final point will be connected to the first.

Warning: The returned value is a clone of the PackedVector2Array, not a reference.