UE

如何根据A *规划路线自动生成样条线,并让人物按照样条线移动

根据目的地节点生成A*规划路线

前置工作:UE5中创建一个俯视视角的游戏,清除游戏内多余的柱子

以人物当前所在位置为起始点

准备工作

创建一个材质

image-20250602100117551

在材质内设置蓝图,主要是实现材质的透明效果

image-20250602100213586

创建棋盘格

image-20250602100527813

创建棋盘格的碰撞盒子,同时设置棋盘格的碰撞为NoCollision

image-20250602100700059

设置起点和终点

这里使用灰色立方体来作为终点,白色作为起点。厚度都调整为0.01

image-20250603150939201

蓝图实现

均在BP_TopDownCharacter中

image-20250603151518050

FUNC_A_Star_moveCaculate

image-20250603151646434

image-20250603151659970

将规划路线转化为坐标点,用于后面的生成样条点

image-20250603151717878

FUNC_DistanceToDestination

image-20250603151749634

使用的变量函数

image-20250603152011515

根据规划路线形成样条点集

BP_TopDownCharacter中

image-20250603152346860

BP_Spine中

image-20250603152336286

AI按照样条点位置移动(AI行为树)

BP_TopDownCharacter中

image-20250603152433571

AIController_New中

image-20250603152604913

BP_AiTree

image-20250603152921518

黑板

image-20250603152954643

根据样条线找点

image-20250603152829021

所有创建的蓝图类

image-20250603153230871

优化了生成路径点同一方向重复生成

新增加的函数和变量

image-20250604110931175

新增函数具体内容

FUNC_JoinSpecialPoint函数中

isChange变量默认值为-1,表示尚未加入点(起点和终点除外)

image-20250604110745369

FUNC_changeLastPosition

image-20250604110820543

FUNC_addPosition

image-20250604110840287

新增变量值的获取和主体部分部分修改内容

lastPosition值的获取和起始点位置加入数组

image-20250604111030416

将终点最后加入数组

image-20250604111045692