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 中的向上向量信息来强制定向。该旋转模式需要将 Path3DCurve3D.up_vector_enabled 属性设置为 true


属性说明

bool cubic_interp = true 🔗

  • void set_cubic_interpolation(value: bool)

  • bool get_cubic_interpolation()

如果为 true,则两个缓存点之间的位置将被三次插值,否则将被线性插值。

沿着 Path3DCurve3D 的点在使用前已被预先计算,以便更快地计算。然后在两个相邻缓存点之间,插值计算请求的偏移处的点。如果曲线急转弯,这可能会出现问题,因为缓存的点可能没有足够紧密地跟随曲线。

这个问题有两个答案:要么增加缓存点的数量,并增加内存消耗;要么在两个点之间进行三次插值,代价是(稍微)降低计算速度。


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 作为最后一个顶点。这只是表示路径内偏移量的另一种方式,提供的偏移量在内部会与路径的长度相乘。


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.FORWARDVector3.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 🔗

校正 transformrotation_mode 隐式指定如何计算姿势(向前、向上和侧向)。