PathFollow3D

Наследует: Node3D < Node < Object

Точечный сэмплер для Path3D.

Описание

Этот узел берет свой родительский Path3D и возвращает координаты точки внутри него, учитывая расстояние от первой вершины.

Это полезно для того, чтобы заставить другие узлы следовать по пути, без кодирования шаблона движения. Для этого узлы должны быть дочерними по отношению к этому узлу. Узлы-потомки затем будут двигаться соответственно при установке progress в этом узле.

Свойства

bool

cubic_interp

true

float

h_offset

0.0

bool

loop

true

float

progress

0.0

float

progress_ratio

0.0

RotationMode

rotation_mode

3

bool

tilt_enabled

true

bool

use_model_front

false

float

v_offset

0.0

Методы

Transform3D

correct_posture(transform: Transform3D, rotation_mode: RotationMode) static


Перечисления

enum RotationMode: 🔗

RotationMode ROTATION_NONE = 0

Запрещает PathFollow3D вращаться.

RotationMode ROTATION_Y = 1

Позволяет PathFollow3D вращаться только по оси Y.

RotationMode ROTATION_XY = 2

Позволяет PathFollow3D вращаться по осям X и Y.

RotationMode ROTATION_XYZ = 3

Позволяет PathFollow3D вращаться вокруг любой оси.

RotationMode ROTATION_ORIENTED = 4

Использует информацию о векторе вверх в Curve3D для обеспечения ориентации. Этот режим вращения требует, чтобы свойство Curve3D.up_vector_enabled Path3D было установлено в true.


Описания свойств

bool cubic_interp = true 🔗

  • void set_cubic_interpolation(value: bool)

  • bool get_cubic_interpolation()

Если true, положение между двумя кэшированными точками интерполируется кубически, а в противном случае — линейно.

Точки вдоль Curve3D Path3D предварительно вычисляются перед использованием для более быстрых вычислений. Затем точка с запрошенным смещением вычисляется путем интерполяции между двумя соседними кэшированными точками. Это может представлять проблему, если кривая делает резкие повороты, так как кэшированные точки могут недостаточно точно следовать кривой.

Есть два решения этой проблемы: либо увеличить количество кэшированных точек и увеличить потребление памяти, либо выполнить кубическую интерполяцию между двумя точками за счет (немного) более медленных вычислений.


float h_offset = 0.0 🔗

  • void set_h_offset(value: float)

  • float get_h_offset()

Смещение узла вдоль кривой.


bool loop = true 🔗

  • void set_loop(value: bool)

  • bool has_loop()

Если true, любое смещение за пределами длины пути будет зацикливаться, а не останавливаться на концах. Используйте его для циклических путей.


float progress = 0.0 🔗

  • void set_progress(value: float)

  • float get_progress()

Расстояние от первой вершины, измеренное в 3D-единицах вдоль пути. Изменение этого значения устанавливает положение этого узла в точке внутри пути.


float progress_ratio = 0.0 🔗

  • void set_progress_ratio(value: float)

  • float get_progress_ratio()

Расстояние от первой вершины, считая 0.0 первой вершиной, а 1.0 последней. Это просто другой способ выражения прогресса в пределах пути, поскольку предоставленный прогресс умножается внутренне на длину пути.

Его можно установить или получить, только если PathFollow3D является дочерним элементом Path3D, который является частью дерева сцены, и что этот Path3D имеет Curve3D с ненулевой длиной. В противном случае попытка установить это поле выведет ошибку, а получение этого поля вернет 0.0.


RotationMode rotation_mode = 3 🔗

Разрешает или запрещает вращение по одной или нескольким осям в зависимости от используемых констант RotationMode.


bool tilt_enabled = true 🔗

  • void set_tilt_enabled(value: bool)

  • bool is_tilt_enabled()

Если true, свойство наклона Curve3D вступает в силу.


bool use_model_front = false 🔗

  • void set_use_model_front(value: bool)

  • bool is_using_model_front()

Если true, узел перемещается по траектории перемещения с ориентацией оси +Z вперед. См. также Vector3.FORWARD и Vector3.MODEL_FRONT.


float v_offset = 0.0 🔗

  • void set_v_offset(value: float)

  • float get_v_offset()

Смещение узла перпендикулярно кривой.


Описания метода

Transform3D correct_posture(transform: Transform3D, rotation_mode: RotationMode) static 🔗

Исправьте transform. rotation_mode неявно указывает, как рассчитывается поза (вперед, вверх и вбок).