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 ...
最新文章
- PicoBlaze性能
- python 模拟键盘_python+selenium模拟键盘输入
- 【嵌入式开发】用 VLC 显示 树莓派摄像头 H264 裸流
- 1242 Rescue BFS
- 一种小型后台管理系统通用开发框架中的Cache缓存设计
- 给字母保密的c语言,C语言练习题
- 资源帖:CV代码库搜集
- Unity中使用RequireComponent,没有添加上组件
- python线程任务run_python线程、进程知识梳理
- secret sharing;拉格朗日插值,shamir秘密分享,peterson秘密分享
- ToolBar控件去除默认的左边距
- 在网页中加入神奇的效果
- 20050909:女乘客钓男司机?
- opengl在windows中使用最新的opengl
- 在不被限制的前提下,企业微信一天加多少好友(主动+被动)
- android 磁贴布局,拼图酱 - 通过布局、磁贴、滤镜等元素重新组合照片,充满乐趣 - Android 应用 - 图像 - 【最美应用】...
- 软考_信息系统项目管理师_信息系统项目管理基础
- 轻音乐-Bandari(班得瑞)
- OOAD 3 迭代、进化和敏捷(Iterative,Evolutionary,and Agile)
- 云服务器不需要网站吗,网站不用云服务器可以吗
热门文章
- QT自定义精美换肤界面
- “环签名、Pedersen承诺、范围证明”三者可擦出不一样的火花
- 基于ArcGIS的Python编程秘笈笔记(三):自动化地图制图和打印
- 适合ipad的python编程软件-iPad编程软件推荐(一) —— Pythonista 3
- 字节跳动1/3员工不支持取消大小周工作制, 员工:每年少赚10万块!
- Alitum Designer 20新建工程及汉化教程
- java奥特曼对战小怪兽_【课堂】模拟奥特曼打小怪兽
- JDK 16 昨日正式发布,新特性实践尝鲜来啦!
- SCS【8】单细胞转录组之筛选标记基因 (Monocle 3)
- 【CAD开发】gltf文件格式的转换工具汇总(js、python、c++)