cocos2d-x横版格斗游戏教程3
https://blog.csdn.net/zhanghefu/article/details/27588955
这一篇要为英雄创造一些小伙伴了,并且需要让机器人会巡逻,会偷懒,会行走,还会攻击英雄,当然也能受伤。其实机器人和英雄有一些共同的属性:攻击力、生命值和行走速度。但机器人是由电脑控制,状态是随机切换的,所以还需要指定巡逻区域、攻击区域、行走方向、决策时间等。
1. 添加机器人
首先更新BaseSprite类,添加攻击力和生命值属性,在BaseSprite.h中添加:
1 2 |
|
创建Enemy类,代表敌方机器人,这里需要实现简单的AI,让机器人能自动思考,根据具体环境切换自己的状态:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
AiState表示机器人的四种状态:休闲、巡逻、攻击、跟随。机器人还有几个变量,分别表示:行走方向、巡逻范围、攻击范围、当前AI状态。
m_nextDecisionTime表示机器人距离下一次决策的时间,execute函数是在GameLayer.cpp中update函数调用的,定期执行更新机器人状态。decide函数实现机器人怎么决策,是机器人的内心世界。
这里重点分析机器人AI该怎么实现,因为只是一个demo,所以就尽可能的简单些吧。首先机器人需要根据自己的朝向和英雄的位置来思考,如果机器人背对着英雄或者英雄处于机器人巡逻范围之外,那么此时机器人是看不到英雄的,机器人就会随机的选择继续巡逻或者站着偷懒。如果英雄在机器人的巡逻范围内,且被机器人看到了,则机器人需要判断英雄是否处于自己的攻击范围,来决策是攻击还是追过去。每种状态下的思考时间最好设置成随机的,这样更真实。看源码实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
|
当机器人思考接下来该做什么时,就会执行相应的操作和动画。
机器人创造完成了,现在把它添加到游戏中去,修改GameLayer.h,添加下面的代码:
1 2 3 4 5 6 7 |
|
updateEnemies表示每一次循环都会更新每个机器人的状态,onEnemyAttack是机器人攻击英雄时执行的函数,暂时不实现。m_pEnemies为保存机器人的容器。
修改GameLayer.cpp,添加下面的函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
|
在GameLayer.cpp的update函数中添加:
1 |
|
在init函数中添加:
1 2 3 4 5 6 |
|
OK,现在编译运行项目,就可以看到屏幕上有5个机器人追着英雄打了,效果如下图:
目前机器人和英雄都没有攻击效果,都是无敌状态,不过他们好日子快到头了,下一篇我们就来让他们接受现实的残酷吧。
cocos2d-x横版格斗游戏教程3相关推荐
- cocos2d-x横版格斗游戏教程4
上一篇我们已经可以看到英雄和机器人都处于无敌状态,现在让他们互相残杀吧,所以接下来将要实现碰撞检测功能.先来看看下面这张图: 这里碰撞检测采用比较简单的矩形,可以看到英雄和机器人在攻击的时候会把拳头伸 ...
- cocos2d-x横版格斗游戏教程1
转载:https://blog.csdn.net/zhanghefu/article/details/27586421 马上就要放假回家了,最近几天也比较闲,所以抽空来学习一下cocos2d-x 3. ...
- cocos2d-x 3 0 制作横版格斗游戏
转自:http://philon.cn/post/cocos2d-x-3.0-zhi-zuo-heng-ban-ge-dou-you-xi cocos2d-x: v3.0-alpha-pre Wind ...
- Cocos2d-x 3.0 制作横版格斗游戏2
转载:https://blog.csdn.net/bridge001/article/details/18882575 git:https://github.com/pj2933/fight2d co ...
- cocos2d-x 3.0 制作横版格斗游戏
cocos2d-x: v3.0-alpha-pre Windows环境: Windows8 + Visual Studio 2012 Linux环境: Ubuntu12.04 + gcc 4.7.2 ...
- Beat #39;Em Up Game Starter Kit (横版格斗游戏) cocos2d-x游戏源代码
浓缩精华.专注战斗! 游戏的本质是什么?界面?养成?NoNo! 游戏来源于对实战和比赛的模拟,所以它的本源就是对抗.就是战斗! 是挥洒热血的一种方式! 一个游戏最复杂最难做的是什么?UI?商城? ...
- Beat 'Em Up Game Starter Kit (横版格斗游戏) cocos2d-x游戏源码
浓缩精华,专注战斗! 游戏的本质是什么?界面?养成?NoNo! 游戏来源于对实战和比赛的模拟,所以它的本源就是对抗!就是战斗!是挥洒热血的一种方式! 一个游戏最复杂最难做的是什么?U ...
- java 横版游戏开发_用MyEclipse的Java Project开发仿DNF横版格斗游戏
这些天,我正在用MyEclipse的Java Project开发一款仿DNF 横版格斗游戏. http://v.youku.com/v_show/id_XMTI5MTE0NDg4MA==.html 这 ...
- 横版java_Project4 自己用java写的横版格斗游戏
功能还不是很复杂
可以作为参考~ Other Games 其他 238万源代码下载- www.pudn.com...
文件名称: Project4下载 收藏√ [ 5 4 3 2 1 ] 开发工具: Java 文件大小: 5963 KB 上传时间: 2013-07-17 下载次数: 4 提 供 者: lyk ...
最新文章
- 《R语言游戏数据分析与挖掘》一导读
- 几个经典的TCP通信函数
- 13.PHP_ThinkPHP
- js 默认的参数、可变的参数、变量作用域
- matlab 中的dir函数使用
- C语言文件读写(5)-文件位置相关
- C#中Bitmap类实现对图像操作的一些方法(转)
- TransactionScrope 2
- 网站点赞 评论 回复 数据库设计
- 用python做数学题_「文山玩Python做测试」用python做算术题,很简单
- 利用FGSM实现对抗样本攻击
- ae去闪插件deflicker使用_AE去闪烁插件|RevisionFX DEFlicker(AE视频去闪烁插件) V1.4.12 官方版 下载_当下软件园_软件下载...
- GameFi市值飙升,详解N.Fans目前的发展现状以及未来前景
- 关于绩效考核及绩效面谈
- Photoshop设置图片的背景色为透明
- 2015年4月21日---开始写自己的专业博客啦
- html 调用es2015模块,在浏览器中懒加载ES2015模块
- python实现word文档合并
- 无人机编队飞行技术 pdf_无人机教师李刚:无人机飞行中最重要的六个要点
- 戴尔笔记本提示“您已插入低瓦数电源适配器 在bios设置中可以禁用此警告”