UE4制作沙盒RPG

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组件。

制作过程

AI的Tick事件
首先是进行2秒的延迟,不了解Delay节点的小伙伴可以先关了这篇日志。先去学一下更基础的内容了。
这里我用一个IsMoving的bool变量保存一个状态,当AI当前你正处于移动状态时候不会再进行移动操作。
GetRandomReachablePointRadius
现在隆重介绍一下GetRandomReachablePointRadius这个节点,官方节点的解释是"从给定位置生成一个可到达的随机位置"。需要一个原点位置,这里我们把AI自身的位置传过去。就是在AI附近1000半径的圆形范围内找个随机点。 AIMoveTo
然后把这个随机点传给AIMoveTo节点,移动完成后(无论成功与否)都将IsMoving设置为false。
给AI添加一个PawnSensing组件,给PeripheralVisionAngle修改为60,这样AI就只能“看到”前面的方向 PeripheralVisionAngle 在组件的OnSeePawn中我们可以简单的实现“当AI看见玩家角色之后,就移动到玩家角色所在的位置”
OnSeePawn
这里我们将IsMoving设置为true,否则AI在移动到角色位置前就又开始随机巡逻了。这样的效果显然不是我们想要的。在移动完成后,我们进行短暂的延时。

测试调优

多添加几个AI,然后运行。
完美。

#下期预告

从下一期开始我们设计并开发一个完善的任务系统。

上一篇 下一篇

猜你喜欢

热点阅读