Line2D

Inherits: Node2D < CanvasItem < Node < Object

A 2D line.

Description

A line through several points in 2D space. Supports varying width and color over the line's length, texturing, and several cap/joint types.

Note: By default, Godot can only draw up to 4,096 polygon points at a time. To increase this limit, open the Project Settings and increase ProjectSettings.rendering/limits/buffers/canvas_polygon_buffer_size_kb and ProjectSettings.rendering/limits/buffers/canvas_polygon_index_buffer_size_kb.

Tutorials

Properties

bool

antialiased

false

LineCapMode

begin_cap_mode

0

Color

default_color

Color( 0.4, 0.5, 1, 1 )

LineCapMode

end_cap_mode

0

Gradient

gradient

LineJointMode

joint_mode

0

PoolVector2Array

points

PoolVector2Array(  )

int

round_precision

8

float

sharp_limit

2.0

Texture

texture

LineTextureMode

texture_mode

0

float

width

10.0

Curve

width_curve

Methods

void

add_point ( Vector2 position, int index=-1 )

void

clear_points ( )

int

get_point_count ( ) const

Vector2

get_point_position ( int index ) const

void

remove_point ( int index )

void

set_point_position ( int index, Vector2 position )


Enumerations

enum LineJointMode:

LineJointMode LINE_JOINT_SHARP = 0

The line's joints will be pointy. If sharp_limit is greater than the rotation of a joint, it becomes a bevel joint instead.

LineJointMode LINE_JOINT_BEVEL = 1

The line's joints will be bevelled/chamfered.

LineJointMode LINE_JOINT_ROUND = 2

The line's joints will be rounded.


enum LineCapMode:

LineCapMode LINE_CAP_NONE = 0

Don't draw a line cap.

LineCapMode LINE_CAP_BOX = 1

Draws the line cap as a box.

LineCapMode LINE_CAP_ROUND = 2

Draws the line cap as a circle.


enum LineTextureMode:

LineTextureMode LINE_TEXTURE_NONE = 0

Takes the left pixels of the texture and renders it over the whole line.

LineTextureMode LINE_TEXTURE_TILE = 1

Tiles the texture over the line. The texture must be imported with Repeat enabled for it to work properly.

LineTextureMode LINE_TEXTURE_STRETCH = 2

Stretches the texture across the line. Import the texture with Repeat disabled for best results.


Property Descriptions

bool antialiased = false

  • void set_antialiased ( bool value )

  • bool get_antialiased ( )

If true, the line's border will attempt to perform antialiasing by drawing thin OpenGL smooth lines on the line's edges.

Note: Line2D is not accelerated by batching if antialiased is true.

Note: Due to how it works, built-in antialiasing will not look correct for translucent lines and may not work on certain platforms. As a workaround, install the Antialiased Line2D add-on then create an AntialiasedLine2D node. That node relies on a texture with custom mipmaps to perform antialiasing. 2D batching is also still supported with those antialiased lines.


LineCapMode begin_cap_mode = 0

Controls the style of the line's first point. Use LineCapMode constants.


Color default_color = Color( 0.4, 0.5, 1, 1 )

  • void set_default_color ( Color value )

  • Color get_default_color ( )

The line's color. Will not be used if a gradient is set.


LineCapMode end_cap_mode = 0

Controls the style of the line's last point. Use LineCapMode constants.


Gradient gradient

The gradient is drawn through the whole line from start to finish. The default color will not be used if a gradient is set.


LineJointMode joint_mode = 0

The style for the points between the start and the end.


PoolVector2Array points = PoolVector2Array(  )

The points that form the lines. The line is drawn between every point set in this array. Points are interpreted as local vectors.


int round_precision = 8

  • void set_round_precision ( int value )

  • int get_round_precision ( )

The smoothness of the rounded joints and caps. Higher values result in smoother corners, but are more demanding to render and update. This is only used if a cap or joint is set as round.

Note: The default value is tuned for lines with the default width. For thin lines, this value should be reduced to a number between 2 and 4 to improve performance.


float sharp_limit = 2.0

  • void set_sharp_limit ( float value )

  • float get_sharp_limit ( )

The direction difference in radians between vector points. This value is only used if joint_mode is set to LINE_JOINT_SHARP.


Texture texture

The texture used for the line's texture. Uses texture_mode for drawing style.


LineTextureMode texture_mode = 0

The style to render the texture on the line. Use LineTextureMode constants.


float width = 10.0

  • void set_width ( float value )

  • float get_width ( )

The line's width.


Curve width_curve

  • void set_curve ( Curve value )

  • Curve get_curve ( )

The line's width varies with the curve. The original width is simply multiply by the value of the Curve.


Method Descriptions

void add_point ( Vector2 position, int index=-1 )

Adds a point with the specified position relative to the line's own position. Appends the new point at the end of the point list.

If index is given, the new point is inserted before the existing point identified by index index. Every existing point starting from index is shifted further down the list of points. The index must be greater than or equal to 0 and must not exceed the number of existing points in the line. See get_point_count.


void clear_points ( )

Removes all points from the line.


int get_point_count ( ) const

Returns the amount of points in the line.


Vector2 get_point_position ( int index ) const

Returns the position of the point at index index.


void remove_point ( int index )

Removes the point at index index from the line.


void set_point_position ( int index, Vector2 position )

Overwrites the position of the point at index index with the supplied position.