Curve

继承: Resource < RefCounted < Object

一条数学曲线。

描述

该资源通过在每个点定义一组点和切线来描述数学曲线。默认情况下,它在X和Y轴上的范围在01之间,但这些范围可以更改。

请注意,许多资源和节点假设它们被赋予单位曲线。单位曲线是其域(X轴)在01之间的曲线。

属性

方法

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()

float

get_domain_range() const

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

float

get_value_range() 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)


信号

domain_changed() 🔗

max_domainmin_domain变更时发出。


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_domain = 1.0 🔗

  • void set_max_domain(value: float)

  • float get_max_domain()

点可以拥有的最大域(x坐标)。


float max_value = 1.0 🔗

  • void set_max_value(value: float)

  • float get_max_value()

点可以具有的最大值(y坐标)。切线可以导致点之间的值更高。


float min_domain = 0.0 🔗

  • void set_min_domain(value: float)

  • float get_min_domain()

点可以具有的最小域(x坐标)。


float min_value = 0.0 🔗

  • void set_min_value(value: float)

  • float get_min_value()

点可以具有的最小值(y坐标)。切线会导致点之间的值较低。


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个单位(引擎ε值)的点。


void clear_points() 🔗

从曲线中删除所有点。


float get_domain_range() const 🔗

返回min_domainmax_domain之间的差值。


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处点的直切角(以度为单位)。


float get_value_range() const 🔗

返回min_valuemax_value之间的差值。


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) 🔗

将垂直位置y分配给index处的点。