Path2D
2026/4/14大约 3 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — Path2D
Path2D
节点继承关系
继承自 Node
| 类型 | 名称 | 说明 |
|---|---|---|
| 属性 | Name | 节点名称 |
| 属性 | ProcessMode | 处理模式(始终 / 暂停时 / 仅编辑器) |
| 属性 | ProcessPriority | 处理优先级,数字越小越先执行 |
| 信号 | ready | 节点进入场景树并准备就绪 |
| 信号 | tree_entered | 节点进入场景树 |
| 信号 | tree_exited | 节点完全离开场景树 |
| 方法 | GetNode<T>() | 按路径获取子节点 |
| 方法 | AddChild() | 添加子节点 |
| 方法 | RemoveChild() | 移除子节点 |
| 方法 | QueueFree() | 帧结束后释放节点 |
| 方法 | GetParent() | 获取父节点 |
定义
Path2D 是用来"画一条2D曲线"的节点。你可以在编辑器里通过添加控制点来画出各种弯曲的路径,就像用笔在纸上画一条线一样。这条线本身是不可见的,但其他东西可以沿着它走。
简单说:Path2D 就是画一条隐形的轨道,让别的物体可以沿着这条轨道移动。
使用频率:★★★ 一般常用
节点用途
- 敌人巡逻路径:画出敌人来回巡逻的路线
- 平台移动轨迹:让浮空平台沿着固定路线来回移动
- 摄像机移动:让摄像机沿着预定路径移动(过场动画)
- 弹道轨迹:画出子弹或魔法飞行的曲线轨迹
- 道路/河流:用 Path2D 描出道路或河流的走向
使用场景
| 场景 | 说明 |
|---|---|
| 2D平台游戏 | 敌人沿 Path2D 巡逻,平台沿 Path2D 上下移动 |
| 塔防游戏 | 用 Path2D 定义敌人行进的路线 |
| 过场动画 | 摄像机沿 Path2D 移动,展示关卡全貌 |
| 跑酷游戏 | 用 Path2D 定义关卡地形走势 |
常用节点搭配
| 搭配节点 | 搭配方式 |
|---|---|
| PathFollow2D | 作为 Path2D 的子节点,实现沿路径移动 |
| Line2D | 把 Path2D 的曲线可视化显示出来 |
生效必备素材/资源
Path2D 需要一个 Curve2D 资源,通常在编辑器中直接编辑创建。
节点属性与信号
属性
| 属性 | 类型 | 默认值 | 继承自 | 说明 |
|---|---|---|---|---|
| curve | Curve2D | null | Path2D | 路径曲线资源,定义了路径的形状(控制点、弯曲程度等) |
信号
Path2D 没有自己的特有信号。
常用方法
| 方法 | 参数 | 返回值 | 说明 |
|---|---|---|---|
| GetCurve() | 无 | Curve2D | 获取路径曲线对象 |
代码示例
C
// C# - 用代码创建一条巡逻路径
using Godot;
public partial class PatrolPathCreator : Node2D
{
private Path2D _patrolPath;
public override void _Ready()
{
_patrolPath = new Path2D();
var curve = new Curve2D();
// 添加控制点,画出一条巡逻路线
curve.AddPoint(new Vector2(0, 0));
curve.AddPoint(new Vector2(200, 0));
curve.AddPoint(new Vector2(200, 200));
curve.AddPoint(new Vector2(0, 200));
_patrolPath.Curve = curve;
AddChild(_patrolPath);
}
}GDScript
# GDScript - 用代码创建一条巡逻路径
extends Node2D
var patrol_path: Path2D
func _ready():
patrol_path = Path2D.new()
var curve = Curve2D.new()
# 添加控制点,画出一条巡逻路线
curve.add_point(Vector2(0, 0))
curve.add_point(Vector2(200, 0))
curve.add_point(Vector2(200, 200))
curve.add_point(Vector2(0, 200))
patrol_path.curve = curve
add_child(patrol_path)