Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Line2D

继承: Node2D < CanvasItem < Node < Object

可以选择设置纹理的 2D 折线。

描述

该节点绘制一条 2D 折线,即由多个线段连接的点组成的形状。Line2D 不是数学折线,即线段不是无限细的。它用于渲染,且可以被着色,也可以选择纹理。

警告:某些配置可能无法很好地绘制,例如非常锐利的角度。在这些情况下,节点使用后备绘制逻辑来看起来不错。

注意:Line2D 使用 2D 网格进行绘制。

教程

属性

bool

antialiased

false

LineCapMode

begin_cap_mode

0

bool

closed

false

Color

default_color

Color(1, 1, 1, 1)

LineCapMode

end_cap_mode

0

Gradient

gradient

LineJointMode

joint_mode

0

PackedVector2Array

points

PackedVector2Array()

int

round_precision

8

float

sharp_limit

2.0

Texture2D

texture

LineTextureMode

texture_mode

0

float

width

10.0

Curve

width_curve

方法

void

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

void

clear_points()

int

get_point_count() const

Vector2

get_point_position(index: int) const

void

remove_point(index: int)

void

set_point_position(index: int, position: Vector2)


枚举

enum LineJointMode: 🔗

LineJointMode LINE_JOINT_SHARP = 0

使该折线的接头变尖,通过延伸两条线段直至它们相交来连接它们的侧面。如果关节的旋转太大(基于 sharp_limit),关节将回落到 LINE_JOINT_BEVEL 以防止出现过长的斜角。

LineJointMode LINE_JOINT_BEVEL = 1

使折线的接头倾斜/倒角,用一条简单的线连接两个线段的侧面。

LineJointMode LINE_JOINT_ROUND = 2

使该折线的接头变圆,用圆弧连接两条线段的侧面。该弧的细节取决于 round_precision


enum LineCapMode: 🔗

LineCapMode LINE_CAP_NONE = 0

不绘制线条端点。

LineCapMode LINE_CAP_BOX = 1

将线帽绘制为方框,稍微延伸第一段/最后一段。

LineCapMode LINE_CAP_ROUND = 2

将线帽绘制为连接到第一条/最后一条线段的半圆。


enum LineTextureMode: 🔗

LineTextureMode LINE_TEXTURE_NONE = 0

获取纹理的左侧像素并将它们渲染在整条折线上。

LineTextureMode LINE_TEXTURE_TILE = 1

将纹理平铺在该折线上。该 Line2D 节点的 CanvasItem.texture_repeat 必须为 CanvasItem.TEXTURE_REPEAT_ENABLEDCanvasItem.TEXTURE_REPEAT_MIRROR,才能正常工作。

LineTextureMode LINE_TEXTURE_STRETCH = 2

沿该折线拉伸纹理。为了获得最佳效果,Line2D 节点的 CanvasItem.texture_repeat 必须为 CanvasItem.TEXTURE_REPEAT_DISABLED


属性说明

bool antialiased = false 🔗

  • void set_antialiased(value: bool)

  • bool get_antialiased()

如果为 true,则折线的边界将使用抗锯齿。

注意:Line2D 在使用抗锯齿时,不会通过批处理来加速。


LineCapMode begin_cap_mode = 0 🔗

closedfalse 时的折线开头样式。使用 LineCapMode 常量。


bool closed = false 🔗

  • void set_closed(value: bool)

  • bool is_closed()

如果为 true 并且折线有超过2个点,则最后一个点和第一个点将通过线段连接。

注意:如果提供了 width_curve,则不保证闭合线段的形状是无缝的。

注意:首先绘制结束线段和第一条线段之间的连接点,并在开始时对 gradientwidth_curve 进行采样。这是在未来版本中可能会更改的实现细节。


Color default_color = Color(1, 1, 1, 1) 🔗

  • void set_default_color(value: Color)

  • Color get_default_color()

折线的颜色。如果设置了渐变,则不会被使用。


LineCapMode end_cap_mode = 0 🔗

closedfalse 时的折线末端样式。使用 LineCapMode 常量。


Gradient gradient 🔗

渐变是从头到尾贯穿整条线绘制的。如果该属性被设置,则 default_color 不会被使用。


LineJointMode joint_mode = 0 🔗

折线段之间的连接样式。使用 LineJointMode 常量。


PackedVector2Array points = PackedVector2Array() 🔗

折线的点,以局部 2D 坐标解释。在该数组中的相邻点之间绘制线段。

Note: The returned array is copied and any changes to it will not update the original property value. See PackedVector2Array for more details.


int round_precision = 8 🔗

  • void set_round_precision(value: int)

  • int get_round_precision()

用于圆形接头和端盖的光滑度。值越高,边角越平滑,但对渲染和更新的要求更高。


float sharp_limit = 2.0 🔗

  • void set_sharp_limit(value: float)

  • float get_sharp_limit()

确定该折线的斜接限制。通常,当 joint_mode 被设置为 LINE_JOINT_SHARP 时,锐角会回退到使用 LINE_JOINT_BEVEL 关节的逻辑来防止过长的斜接。该属性的值越高意味着倒角接头的回退将以更锐利的角度发生。


Texture2D texture 🔗

用于折线的纹理。使用 texture_mode 作为绘图样式。


LineTextureMode texture_mode = 0 🔗

渲染该折线的 texture 的样式。使用 LineTextureMode 常量。


float width = 10.0 🔗

多边形的宽度。


Curve width_curve 🔗

该折线的宽度曲线。该折线在其长度上的宽度将等于宽度曲线在其域上的值。


方法说明

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

在指定的位置 position 添加一个点,该位置相对于该线段自身的位置。如果未提供 index,则新的点将被添加到点数组的末尾。

如果给出 index,则将新点插入到由索引 index 标识的已有点之前。该新点之后的点的索引增加 1。提供的 index 不得超过折线中已有点的数量。请参阅 get_point_count


void clear_points() 🔗

从折线中移除所有点,使其为空。


int get_point_count() const 🔗

返回该折线中的点的数量。


Vector2 get_point_position(index: int) const 🔗

返回索引为 index 的点的位置。


void remove_point(index: int) 🔗

移除该折线中索引为 index 的点。


void set_point_position(index: int, position: Vector2) 🔗

用提供的 position 覆盖给定索引 index 处的点的位置。