PathFollow3D
2026/4/14大约 2 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — PathFollow3D
PathFollow3D
节点继承关系
继承自 Node
| 类型 | 名称 | 说明 |
|---|---|---|
| 属性 | Name | 节点名称 |
| 属性 | ProcessMode | 处理模式(始终 / 暂停时 / 仅编辑器) |
| 属性 | ProcessPriority | 处理优先级,数字越小越先执行 |
| 信号 | ready | 节点进入场景树并准备就绪 |
| 信号 | tree_entered | 节点进入场景树 |
| 信号 | tree_exited | 节点完全离开场景树 |
| 方法 | GetNode<T>() | 按路径获取子节点 |
| 方法 | AddChild() | 添加子节点 |
| 方法 | RemoveChild() | 移除子节点 |
| 方法 | QueueFree() | 帧结束后释放节点 |
| 方法 | GetParent() | 获取父节点 |
定义
PathFollow3D 是 Path3D 的3D版本"跟屁虫"。和 PathFollow2D 一样,它必须作为 Path3D 的子节点,沿着3D路径移动。
简单说:PathFollow3D 让你在3D空间中沿着 Path3D 画的路径移动。
使用频率:★★★ 一般常用
节点用途
- 3D敌人巡逻:让敌人在3D场景中沿路线巡逻
- 过场动画:摄像机沿3D路径飞行
- 轨道系统:过山车沿轨道运行
- 飞行路径:飞机沿航线飞行
- 自动移动:让物体沿3D路径自动移动
使用场景
| 场景 | 说明 |
|---|---|
| 3D动作游戏 | 敌人沿 PathFollow3D 在3D空间巡逻 |
| 过场动画 | 摄像机沿 PathFollow3D 飞越关卡 |
| 赛车游戏 | 车辆沿 PathFollow3D 在赛道上行驶 |
| 飞行射击 | 敌机沿 PathFollow3D 飞行 |
常用节点搭配
| 搭配节点 | 搭配方式 |
|---|---|
| Path3D | PathFollow3D 必须作为 Path3D 的子节点 |
| Camera3D | 作为 PathFollow3D 的子节点,实现摄像机沿路径移动 |
生效必备素材/资源
PathFollow3D 必须作为 Path3D 的子节点,且父 Path3D 必须设置了 curve 属性。
节点属性与信号
属性
| 属性 | 类型 | 默认值 | 继承自 | 说明 |
|---|---|---|---|---|
| progress | float | 0.0 | PathFollow3D | 当前在路径上的位置(像素距离) |
| progress_ratio | float | 0.0 | PathFollow3D | 当前位置的百分比。0.0 = 起点,1.0 = 终点 |
| h_offset | float | 0.0 | PathFollow3D | 沿路径法线方向的水平偏移 |
| v_offset | float | 0.0 | PathFollow3D | 垂直偏移 |
| rotation_mode | int | 0 | PathFollow3D | 旋转模式:0=不旋转,1=朝向切线,2=朝向切线并保持上方向,3=朝向切线使用Y轴上方向 |
| loop | bool | true | PathFollow3D | 是否循环 |
信号
PathFollow3D 没有自己的特有信号。
常用方法
与 PathFollow2D 相同,通过修改 progress 或 progress_ratio 控制位置。
代码示例
C
// C# - 摄像机沿3D路径移动(过场动画)
using Godot;
public partial class CinematicCamera : Node3D
{
private PathFollow3D _pathFollow;
private float _moveSpeed = 0.05f; // 每帧前进的百分比
public override void _Ready()
{
_pathFollow = GetParent<PathFollow3D>();
_pathFollow.Loop = false;
}
public override void _Process(double delta)
{
if (_pathFollow.ProgressRatio < 1.0f)
{
_pathFollow.ProgressRatio += _moveSpeed * (float)delta;
}
}
}GDScript
# GDScript - 摄像机沿3D路径移动(过场动画)
extends Camera3D
@onready var path_follow: PathFollow3D = get_parent()
var move_speed: float = 0.05 # 每帧前进的百分比
func _ready():
path_follow.loop = false
func _process(delta):
if path_follow.progress_ratio < 1.0:
path_follow.progress_ratio += move_speed * delta