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.
Checking the stable version of the documentation...
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
。