上一章我们已经可以让角色按我们的想法去移动和转向了,现在我们先来看怎么制作敌人。
先在Models/Characters里找到3个怪物模型,拖入到场景中,再将场景中的模型拖入到Prefab文件夹中生成prefab预制物,然后场景中的3个模型可以删了。
我们要做的是让怪物能够自动根据角色的位置走过来,即自动寻路,先给3个prefab加上NavMeshAgent 组件,里面不用改具体的内容,这个组件用于自动寻路:

然后这3个物体都挂上脚本EnemyMovement:

先通过Tag"Player"来找到主角的GameObject通过Update()里的SetDestionation方法,可以让敌人不断的确定主角的位置,然后靠近,所以这里还要设定主角的Tag

脚本写完了,给Environment点出static ,弹出的对话框选择Yes,change children。

然后打开navigation界面 :Window/Navigation

再点击Bake/Bake,注意第二个bake在最下面:

可以看到场景里可以走的路都变成蓝色的了,需要注意的是,如果我们后来对摆放的障碍移动了位置,或者新加入了障碍,我们都需要重新Bake。

在场景中新建3个空物体,取名叫spawnPoint1/2/3,将其移动到不同的地方,作为怪物生成点。
接下来我们需要制作生成怪物的脚本,新建脚本EnemyManager.cs,用于怪物的管理

把这个脚本挂在一个空物体上,取名为SwapnManager,空物体就放在场景中,将3个怪物的prefab和场景中的出生点都拖入其中。这个时候,我们的Hierarchy是这样的

而SwapnManager里是这样的:

运行游戏,可以看到怪物都出生后都朝着角色移动啦,快跑!

网友评论