Curve

继承: Resource < RefCounted < Object

数学曲线。

描述

该资源通过定义一组点和每个点的切线来描述数学曲线。默认情况下,它在 Y 轴上的范围在 01 之间,并且位置点相对于 0.5 Y 位置。

另请参阅为颜色插值设计的 Gradient。另请参阅 Curve2DCurve3D

属性

int

bake_resolution

100

float

max_value

1.0

float

min_value

0.0

int

point_count

0

方法

int

add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0)

void

bake()

void

clean_dupes()

void

clear_points()

TangentMode

get_point_left_mode(index: int) const

float

get_point_left_tangent(index: int) const

Vector2

get_point_position(index: int) const

TangentMode

get_point_right_mode(index: int) const

float

get_point_right_tangent(index: int) const

void

remove_point(index: int)

float

sample(offset: float) const

float

sample_baked(offset: float) const

void

set_point_left_mode(index: int, mode: TangentMode)

void

set_point_left_tangent(index: int, tangent: float)

int

set_point_offset(index: int, offset: float)

void

set_point_right_mode(index: int, mode: TangentMode)

void

set_point_right_tangent(index: int, tangent: float)

void

set_point_value(index: int, y: float)


信号

range_changed() 🔗

更改 max_valuemin_value 时发出。


枚举

enum TangentMode: 🔗

TangentMode TANGENT_FREE = 0

点这边的切线是用户自定义的。

TangentMode TANGENT_LINEAR = 1

曲线计算点的这一侧的切线,作为向相邻点的一半的斜率。

TangentMode TANGENT_MODE_COUNT = 2

可用切线模式的总数。


属性说明

int bake_resolution = 100 🔗

  • void set_bake_resolution(value: int)

  • int get_bake_resolution()

烘焙(即缓存)曲线数据中包含的点的数量。


float max_value = 1.0 🔗

  • void set_max_value(value: float)

  • float get_max_value()

曲线能达到的最大值。


float min_value = 0.0 🔗

  • void set_min_value(value: float)

  • float get_min_value()

曲线能达到的最小值。


int point_count = 0 🔗

  • void set_point_count(value: int)

  • int get_point_count()

描述该曲线的点的数量。


方法说明

int add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0) 🔗

在曲线上添加一个点。对于每一侧,如果 *_modeTANGENT_LINEAR,则 *_tangent 角度(以度为单位)将使用曲线到邻近点的一半的斜率。如果 *_mode 设置为 TANGENT_FREE,则允许自定义分配给 *_tangent 的角度。


void bake() 🔗

重新计算曲线的烘焙点缓存。


void clean_dupes() 🔗

移除重复点,即与曲线上相邻点的距离小于 0.00001 个单位(引擎中的 epsilon 值)的点。


void clear_points() 🔗

从曲线中移除所有点。


TangentMode get_point_left_mode(index: int) const 🔗

返回索引为 index 的点的左侧切线模式 TangentMode


float get_point_left_tangent(index: int) const 🔗

返回索引为 index 的点的左侧切线夹角(单位为度)。


Vector2 get_point_position(index: int) const 🔗

返回索引为 index 的点的曲线坐标。


TangentMode get_point_right_mode(index: int) const 🔗

返回索引为 index 的点的右侧切线模式 TangentMode


float get_point_right_tangent(index: int) const 🔗

返回索引为 index 的点的右侧切线夹角(单位为度)。


void remove_point(index: int) 🔗

移除曲线中索引为 index 的点。


float sample(offset: float) const 🔗

返回沿曲线的 X 位置 offset 处将存在的点的 Y 值。


float sample_baked(offset: float) const 🔗

使用烘焙的缓存返回沿曲线的 X 位置 offset 处将存在的点的 Y 值。烘焙尚未烘焙的曲线的点。


void set_point_left_mode(index: int, mode: TangentMode) 🔗

将索引为 index 的点的左侧 TangentMode 设置为 mode


void set_point_left_tangent(index: int, tangent: float) 🔗

将索引为 index 的点的左侧切线角度设置为 tangent


int set_point_offset(index: int, offset: float) 🔗

设置相对于 0.5 的偏移量。


void set_point_right_mode(index: int, mode: TangentMode) 🔗

将索引为 index 的点的右侧 TangentMode 设置为 mode


void set_point_right_tangent(index: int, tangent: float) 🔗

将索引为 index 的点的右侧切线角度设置为 tangent


void set_point_value(index: int, y: float) 🔗

将索引为 index 的点的垂直位置设置为 y