Path3D
2026/4/14大约 2 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — Path3D
Path3D
节点继承关系
继承自 Node
| 类型 | 名称 | 说明 |
|---|---|---|
| 属性 | Name | 节点名称 |
| 属性 | ProcessMode | 处理模式(始终 / 暂停时 / 仅编辑器) |
| 属性 | ProcessPriority | 处理优先级,数字越小越先执行 |
| 信号 | ready | 节点进入场景树并准备就绪 |
| 信号 | tree_entered | 节点进入场景树 |
| 信号 | tree_exited | 节点完全离开场景树 |
| 方法 | GetNode<T>() | 按路径获取子节点 |
| 方法 | AddChild() | 添加子节点 |
| 方法 | RemoveChild() | 移除子节点 |
| 方法 | QueueFree() | 帧结束后释放节点 |
| 方法 | GetParent() | 获取父节点 |
定义
Path3D 和 Path2D 是同一个东西,只不过 Path3D 用在3D空间里。你可以在3D空间中画一条弯曲的路径,其他物体可以沿着它移动。
简单说:Path3D 就是3D版本的隐形轨道。
使用频率:★★★ 一般常用
节点用途
- 敌人巡逻路径:在3D场景中画出敌人巡逻的3D路线
- 过场动画路径:摄像机沿3D路径移动,展示场景
- 道路生成:用 Path3D 定义3D道路的走向
- 轨道系统:定义过山车、轨道列车等运动轨迹
- 飞行路径:定义飞机、导弹等飞行物的航线
使用场景
| 场景 | 说明 |
|---|---|
| 3D动作游戏 | 敌人沿 Path3D 在3D空间中巡逻 |
| 过场动画 | 摄像机沿 Path3D 飞越整个关卡 |
| 赛车游戏 | 用 Path3D 定义赛道路线 |
| 飞行游戏 | 用 Path3D 定义飞机的飞行航线 |
常用节点搭配
| 搭配节点 | 搭配方式 |
|---|---|
| PathFollow3D | 作为 Path3D 的子节点,实现沿路径移动 |
| PathFollow2D | 作为 Path3D 的子节点,实现沿路径移动 |
生效必备素材/资源
Path3D 需要一个 Curve3D 资源。
节点属性与信号
属性
| 属性 | 类型 | 默认值 | 继承自 | 说明 |
|---|---|---|---|---|
| curve | Curve3D | null | Path3D | 路径曲线资源,定义了3D路径的形状 |
信号
Path3D 没有自己的特有信号。
常用方法
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| GetCurve() | 无 | Curve3D | 获取路径曲线对象 |
代码示例
C
// C# - 用代码创建一条3D巡逻路径
using Godot;
public partial class PatrolPathCreator3D : Node3D
{
private Path3D _patrolPath;
public override void _Ready()
{
_patrolPath = new Path3D();
var curve = new Curve3D();
// 添加3D控制点,画出一条3D巡逻路线
curve.AddPoint(new Vector3(0, 0, 0));
curve.AddPoint(new Vector3(10, 0, 0));
curve.AddPoint(new Vector3(10, 0, 10));
curve.AddPoint(new Vector3(0, 2, 10));
_patrolPath.Curve = curve;
AddChild(_patrolPath);
}
}GDScript
# GDScript - 用代码创建一条3D巡逻路径
extends Node3D
var patrol_path: Path3D
func _ready():
patrol_path = Path3D.new()
var curve = Curve3D.new()
# 添加3D控制点,画出一条3D巡逻路线
curve.add_point(Vector3(0, 0, 0))
curve.add_point(Vector3(10, 0, 0))
curve.add_point(Vector3(10, 0, 10))
curve.add_point(Vector3(0, 2, 10))
patrol_path.curve = curve
add_child(patrol_path)