【UE4 塔防游戏系列】04-敌人沿着指定路线移动

目录

效果

步骤

一、绘制道路

二、创建出生点和路径点 

三、生成敌人

四、敌人沿着路径点移动


效果 

步骤

一、绘制道路

首先绘制一条道路,后面希望敌人会沿着这条绘制道路行走。

二、创建出生点和路径点 

2.1 新建父类为Actor的蓝图,作为敌人出生点,命名为“BP_EnemyBirthPlace”

 将其放置在视口中玩家出生的位置

2.2 再创建一个父类为Actor的蓝图,作为敌人在道路上移动的路径点,命名为“BP_EnemyPathPoint”

 在视口中将“BP_EnemyPathPoint”放置在每一个道路的拐点处

2.3 有了路径点之后,我们就需要让每一个路径点知道它的下一个路径点是谁

打开“BP_EnemyPathPoint”,添加一个变量“NextPathPointActor”

 变量类型为其自身(“BP_EnemyPathPoint”)的对象引用

 勾选可编辑实例和生成时公开

2.4 在大纲中选中场景中的第一个路径点,然后去设置NextPathPointActor,即选择下一个路径点是哪个Actor

 这里设置第一个路径点的下一个路径点是“BP_EnemyPathPoint2”,然后以此类推,设置每一个路径点的下一个路径点的是哪一个Actor。

2.5 我们也要告诉出生点那个Actor,敌人从它那里生成后走的下一个路径点是哪个Actor,方法和之前同理。打开“BP_EnemyBirthPlace”,新建一个变量命名为“FirstPathPointActor”

变量类型也是“BP_EnemyPathPoint”的对象引用。

 

 然后在视口中选中出生点,设置“FirstPathPointActor”为第一个路径点的那个Actor

三、生成敌人

打开“TaFangGameMode”

首先在事件图表中获取到敌人出生点的那个Actor

 将获取到的actor作为变量,变量命名为“EnemyBirthPlaceActor”

生成具有AIController的Enemy1

新建一个整型变量“NumOfSpawnEnemy1”,用于记录当前已经生成Enemy1的数量

然后每生成一次就将变量“NumOfSpawnEnemy1”加1

 判断敌人生成的数量是否>20,如果没有到达20个就继续生成敌人。

 可以看到此时已经能够在出生点生成敌人

四、敌人沿着路径点移动

4.1 打开“TotalEnemyCategory”(所有敌人的父类)

 新建一个变量命名为“BirthPlace”

 变量类型为“BP_EnemyBirthPlace”的对象引用

4.2 打开“TaFangGameMode”,添加如下节点。将获取到的出生点的Actor传递给敌人总类中的变量“BirthPlace”

4.3 回到蓝图“TotalEnemyCategory”

此时变量“BirthPlace”已经被赋予了具体的对象(即“BP_EnemyBirthPlace”)

那么我们就可以获得其中的“FirstPathPointActor”

 然后就可以让敌人移动到“FirstPathPointActor”所处的位置

那么如何让敌人不断的移动到下一个路径点的位置呢?我们可以新建一个变量,命名为“NextPathPoint”

变量类型为“BP_EnemyPathPoint”的对象引用

当我们获取到第一个路径点Actor的时候我们就可以将其设置为“NextPathPoint”

 当敌人移动完成后,我们又可以获取到“BP_EnemyPathPoint”中的变量“NextPathPointActor”,并把该变量赋予“NextPathPoint”

 将变量“NextPathPoint”转换为有效的Get,以此来判断是否能够有效的获取到下一个路径点Actor

 如果能有效获取,就不断获取下一个路径点Actor,然后让敌人走到这个Actor所处的位置

 4.4 为了让敌人动起来,我们还需向视口中增加“导航网格体边界体积”,从而让AI知道哪些地方可以走

 扩大“导航网格体边界体积”覆盖区域

 按P键显示AI可以被导航的真实区域

 

 此时如果直接运行游戏的话,可以看到报如下错误

 这因为在“TaFangGameMode”中,还没来得及将获取到“EnemyBirthPlaceActor”传递给蓝图“TotalEnemyCategory”

 我们只需在“TotalEnemyCategory”中加一段延迟即可。

 运行效果如文章开头所示。

猜你喜欢

转载自blog.csdn.net/ChaoChao66666/article/details/131717886