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.

Curve

Успадковує: Resource < RefCounted < Object

Математична крива.

Опис

Цей ресурс описує математичну криву шляхом визначення набору точок і дотичних у кожній точці. За замовчуванням він коливається від 0 до 1 на осях X і Y, але ці діапазони можна змінити.

Зверніть увагу, що багато ресурсів і вузлів припускають, що їм надано одиничні криві. Одинична крива – це крива, домен якої (вісь X) знаходиться між 0 і 1. Деякі приклади використання одиничної кривої: CPUParticles2D.angle_curve і Line2D.width_curve.

Властивості

int

bake_resolution

100

float

max_domain

1.0

float

max_value

1.0

float

min_domain

0.0

float

min_value

0.0

int

point_count

0

int

point_{index}/left_mode

0

float

point_{index}/left_tangent

0.0

Vector2

point_{index}/position

Vector2(0, 0)

int

point_{index}/right_mode

0

float

point_{index}/right_tangent

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

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_domain або min_domain.


range_changed() 🔗

Випромінюється, коли max_value або min_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 point_{index}/left_mode = 0 🔗

The left TangentMode for the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


float point_{index}/left_tangent = 0.0 🔗

The left tangent angle (in degrees) for the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


Vector2 point_{index}/position = Vector2(0, 0) 🔗

The position of the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


int point_{index}/right_mode = 0 🔗

The right TangentMode for the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


float point_{index}/right_tangent = 0.0 🔗

The right tangent angle (in degrees) for the point at index.

Note: index is a value in the 0 .. point_count - 1 range.


Описи методів

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.


void bake() 🔗

Знімає запечене кешування точок для кривої.


void clean_dupes() 🔗

Вилучає дублікати точок, тобто точки, які менше 0,00001 одиниць (ціна NeoSeo значення) від їх сусіда на кривій.


void clear_points() 🔗

Видаліть всі точки з кривої.


float get_domain_range() const 🔗

Повертає різницю між min_domain і max_domain.


TangentMode get_point_left_mode(index: int) const 🔗

Повертає ліву TangentMode на точку index.


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 🔗

Повертаємо право TangentMode на точку index.


float get_point_right_tangent(index: int) const 🔗

Повертає правий кут тангенса (в градусах) для точки з index.


float get_value_range() const 🔗

Повертає різницю між min_value і max_value.


void remove_point(index: int) 🔗

Видаляє точку в index з кривої.


float sample(offset: float) const 🔗

Повертає значення Y для точки, яка б існувала в позиції X offset вздовж кривої.


float sample_baked(offset: float) const 🔗

Повертає значення Y для точки, яка буде існувати на позиції X offset вздовж кривої за допомогою запеченого кешу. Випікає вигнуті точки, якщо вже не запечена.


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

Встановіть ліву TangentMode для точки в index до mode.


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

Встановлює кут лівої дотичної для точки в index на tangent.


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

Assigns the horizontal position offset to the point at index.


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

Налаштовує право TangentMode на точку index до mode.


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

Встановлює кут прямої дотичної для точки в index на tangent.


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

Призначає вертикальну позицію y в точку index.