失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > cocos2d-x横版格斗游戏教程3

cocos2d-x横版格斗游戏教程3

时间:2023-04-03 13:05:26

相关推荐

cocos2d-x横版格斗游戏教程3

/zhanghefu/article/details/27588955

这一篇要为英雄创造一些小伙伴了,并且需要让机器人会巡逻,会偷懒,会行走,还会攻击英雄,当然也能受伤。其实机器人和英雄有一些共同的属性:攻击力、生命值和行走速度。但机器人是由电脑控制,状态是随机切换的,所以还需要指定巡逻区域、攻击区域、行走方向、决策时间等。

1. 添加机器人

首先更新BaseSprite类,添加攻击力和生命值属性,在BaseSprite.h中添加:

创建Enemy类,代表敌方机器人,这里需要实现简单的AI,让机器人能自动思考,根据具体环境切换自己的状态:

AiState表示机器人的四种状态:休闲、巡逻、攻击、跟随。机器人还有几个变量,分别表示:行走方向、巡逻范围、攻击范围、当前AI状态。

m_nextDecisionTime表示机器人距离下一次决策的时间,execute函数是在GameLayer.cpp中update函数调用的,定期执行更新机器人状态。decide函数实现机器人怎么决策,是机器人的内心世界。

这里重点分析机器人AI该怎么实现,因为只是一个demo,所以就尽可能的简单些吧。首先机器人需要根据自己的朝向和英雄的位置来思考,如果机器人背对着英雄或者英雄处于机器人巡逻范围之外,那么此时机器人是看不到英雄的,机器人就会随机的选择继续巡逻或者站着偷懒。如果英雄在机器人的巡逻范围内,且被机器人看到了,则机器人需要判断英雄是否处于自己的攻击范围,来决策是攻击还是追过去。每种状态下的思考时间最好设置成随机的,这样更真实。看源码实现:

当机器人思考接下来该做什么时,就会执行相应的操作和动画。

机器人创造完成了,现在把它添加到游戏中去,修改GameLayer.h,添加下面的代码:

updateEnemies表示每一次循环都会更新每个机器人的状态,onEnemyAttack是机器人攻击英雄时执行的函数,暂时不实现。m_pEnemies为保存机器人的容器。

修改GameLayer.cpp,添加下面的函数:

在GameLayer.cpp的update函数中添加:

在init函数中添加:

OK,现在编译运行项目,就可以看到屏幕上有5个机器人追着英雄打了,效果如下图:

目前机器人和英雄都没有攻击效果,都是无敌状态,不过他们好日子快到头了,下一篇我们就来让他们接受现实的残酷吧。

如果觉得《cocos2d-x横版格斗游戏教程3》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。