RPG游戏开发日志8:AI的移动
2019-05-26 本文已影响0人
李维民0512
写在前面
本项目同步上传于github和coding上,国内读者可以通过在coding下载项目。
也欢迎你加入我的UE4学习交流QQ群:872537977。如果你喜欢我写的文章,也希望你点赞、收藏、转发。谢谢!
如果你喜欢我写的文章,也希望你点赞、收藏、转发。谢谢!
如果你想参与到这个项目的开发中来,唯一的要求是像我一样编写开发日志让更多的人看到并学习。
github地址:https://github.com/Liweimin0512/uRPG
coding地址:https://git.dev.tencent.com/JeremyBrett/uRPG.git
之前的日志中我们实现了一个超级简单的AI,它实现了受击和死亡的功能。
由于这个AI实在是太过简单不免被人吐槽。为了避免这种情况发生,我们今天来把它完善一下,实现一个随机巡逻,看到玩家之后就会追赶玩家的功能。(我才不会说是因为《全面战争三国》上市了我得忙着匡扶汉室所以摸鱼一周没写什么像样的干活呢)
需求分析
随机点巡逻,需要用到NewMesh。AI会每2秒进行一次AI移动。
为了让AI能够看到我们,我们需要给他添加一个PawnSensing组件。
制作过程

首先是进行2秒的延迟,不了解Delay节点的小伙伴可以先关了这篇日志。先去学一下更基础的内容了。
这里我用一个IsMoving的bool变量保存一个状态,当AI当前你正处于移动状态时候不会再进行移动操作。

现在隆重介绍一下
GetRandomReachablePointRadius
这个节点,官方节点的解释是"从给定位置生成一个可到达的随机位置"。需要一个原点位置,这里我们把AI自身的位置传过去。就是在AI附近1000半径的圆形范围内找个随机点。

然后把这个随机点传给AIMoveTo节点,移动完成后(无论成功与否)都将IsMoving设置为false。
给AI添加一个PawnSensing组件,给PeripheralVisionAngle修改为60,这样AI就只能“看到”前面的方向


这里我们将IsMoving设置为true,否则AI在移动到角色位置前就又开始随机巡逻了。这样的效果显然不是我们想要的。在移动完成后,我们进行短暂的延时。
测试调优
多添加几个AI,然后运行。
完美。
#下期预告
从下一期开始我们设计并开发一个完善的任务系统。