Curve
继承: Resource < RefCounted < Object
数学曲线。
描述
该资源通过定义一组点和每个点的切线来描述数学曲线。默认情况下,X 轴和 Y 轴的范围都在 0 到 1 之间,但是范围可以调整。
请注意,许多资源和节点会假设用户设置的是单位曲线。单位曲线即域(X 轴)在 0 到 1 之间的曲线。例如 CPUParticles2D.angle_curve 和 Line2D.width_curve 用的就是单位曲线。
属性
|
||
|
||
|
||
|
||
|
||
|
方法
add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0) |
|
void |
bake() |
void |
|
void |
|
get_domain_range() const |
|
get_point_left_mode(index: int) const |
|
get_point_left_tangent(index: int) const |
|
get_point_position(index: int) const |
|
get_point_right_mode(index: int) const |
|
get_point_right_tangent(index: int) const |
|
get_value_range() const |
|
void |
remove_point(index: int) |
sample_baked(offset: float) const |
|
void |
set_point_left_mode(index: int, mode: TangentMode) |
void |
set_point_left_tangent(index: int, tangent: float) |
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_domain 或 min_domain 时发出。
range_changed() 🔗
枚举
enum TangentMode: 🔗
TangentMode TANGENT_FREE = 0
点这边的切线是用户自定义的。
TangentMode TANGENT_LINEAR = 1
曲线计算点的这一侧的切线,作为向相邻点的一半的斜率。
TangentMode TANGENT_MODE_COUNT = 2
可用切线模式的总数。
属性说明
烘焙(即缓存)曲线数据中包含的点的数量。
点能够达到的最大域(X 坐标)。
点能够达到的最大值(Y 坐标)。切线可能导致两点之间存在更大的值。
点能够达到的最小域(X 坐标)。
点能够达到的最小值(Y 坐标)。切线可能导致两点之间存在更小的值。
描述该曲线的点的数量。
方法说明
int add_point(position: Vector2, left_tangent: float = 0, right_tangent: float = 0, left_mode: TangentMode = 0, right_mode: TangentMode = 0) 🔗
在曲线上添加一个点。对于每一侧,如果 *_mode 为 TANGENT_LINEAR,则 *_tangent 角度(以度为单位)将使用曲线到邻近点的一半的斜率。如果 *_mode 设置为 TANGENT_FREE,则允许自定义分配给 *_tangent 的角度。
void bake() 🔗
重新计算曲线的烘焙点缓存。
void clean_dupes() 🔗
移除重复点,即与曲线上相邻点的距离小于 0.00001 个单位(引擎中的 epsilon 值)的点。
void clear_points() 🔗
从曲线中移除所有点。
float get_domain_range() const 🔗
返回 min_domain 和 max_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 🔗
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。