RPG游戏开发日志4:简单敌人AI
2019-05-02 本文已影响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
这个敌人目前不会动,存在的价值就是被打,然后被杀,被杀时候产生一个掉落物。
还记得上节中那个发射火球的技能么,我们给它改名为Bp_Master_Bullet
,代表Bullet(子弹)的基类,之后会有许多种不同形式的“子弹”,这个Actor在游戏中会十分常见。我们会在之后再陆续丰富它的功能。现在,它是我们攻击敌人的唯一手段。
我们先创建一个AI,名叫“SimpleAI”。官方的机器人看起来很无辜,我们就用他来作为AI的模型。如下图所示:
首先,我们给它添加一个StatManager组件,并且设置如下: StatManager设置 当有Actor和AI发生碰撞的时候,我们判断一下是不是Bullet,如果是,首先在子弹所在位置产生一个受击的特效,特效同样是在
InfinityBladeEffects
中找的相对合适的(其实一点都不合适),主要目的是有个反馈,让我们知道确实击中了。
产生受击特效
逻辑部分也尽量简单的实现,每次被击扣5点生命值,并且将bullet干掉。当生命值为0时候调用一个Death
的方法:
伤害逻辑
运行一下,很正常。
死亡
死亡的处理函数,重点做一件事,那就是从可掉落物(保存在drop中)中随机一个掉落。这里做的是完全随机的方式,关于掉落我觉得可以单独写一篇日志,这里就按下不表。产生掉落的位置就是在AIMesh的左脚骨骼位置。 death函数 drop应该是配置的,这里简单的用一个名称LIst存放,如下图所示: 名称LIst 这里我们学习一个知识点,就是数据表格 数据表格 要使用数据表格,首先要创建一个结构体蓝图,比如我这里创建的ItemData结构体: ItemData结构体 然后我们找了些比较合适的图标,填一批测试数据就可以了: ItemList测试数据 关于掉落物之后再说,这一节我们把之前遗留的一些小尾巴完结。下期预告
下一期,我们来研究一下掉落物的拾取,背包系统的实现。
PS:有个问题,就是我最近找了一批合适的美术资源,但是用git做版本控制的时候出了问题,有的文件太大了,我尝试使用git-lfs但是依然上传报错,如下:
Uploading LFS objects: 100% (3310/3310), 1.2 GB | 422 KB/s, done
Enumerating objects: 7955, done.
Counting objects: 100% (5866/5866), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3750/3750), done.
Writing objects: 100% (3774/3774), 142.78 MiB | 416.00 KiB/s, done.
Total 3774 (delta 80), reused 3257 (delta 0)
remote: Resolving deltas: 100% (80/80), completed with 42 local objects.
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 071140af14b69395f5b273b8daabbc0b
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File Content/PolygonAdventure/Maps/Demonstration.umap is 143.10 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/Liweimin0512/uRPG.git
! [remote rejected] dev -> dev (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/Liweimin0512/uRPG.git'
有知道原因的小伙伴,欢迎在评论里给我留言,先谢谢啦。