游戏开发引擎cocosd-x怪物智能AI怪物也有智商--之游戏开发《赵云要格斗》.doc
文本预览下载声明
Cocos?2d-x怪物智能?AI怪物也?有智商--之游戏开发?《赵云要格斗?》(6)
本文将主要?来讲讲游戏?开发中的怪?物智能,一个好的游?戏一般怪物?都要分等级?,这样我们游?戏玩起来才?有意思,怪物如果智?商太高,游戏难度大?。怪物如果智?商太低,游戏玩起来?又没有意思?。一般好的游?戏低级怪物?和中级怪物?占大部分,高级怪物一?般是BOS?S级怪物。下面我来讲?讲自己对怪?物AI的一?些见解吧。本文接上一?节《Cocos?2d-x血条跟随?怪物运动--之游戏开发?《赵云要格斗?》(5)》
Cocos?2d-x版本:2.2.5
工程环境:Windo?ws7+VS201?0
打开方式:将工程放在?Cocos?2d-x安装目录?下的pro?ject文?件夹下用V?S打开
先看看效果?:
一、怪物智能A?I思路讲解?
低级怪物---一般是不能?动的怪物,固定在原处?,不断的发动?攻击,然后根据英?雄的方位,不断改变子?弹的朝左还?是朝向,如游戏中的?炮台等。
中级怪物----初步有一些?智商了,主要表现在?当英雄在它?的攻击范围?内,能够知道英?雄的位置,就以一定的?比例判断是?否进行攻击?。如若不然,平时都是自?己按照一定?的路线进行?行走,又或者是随?机走动。然后攻击随?机出动,只有当英雄?在它的攻击?范围内,它才会不再?走动,原地以概率?判断是否要?进行攻击
高级怪物-----BOSS级?怪物,它有自己的?可视范围区?,当英雄陷入?它的可视范?围区时,它就追着英?雄跑。可视范围区?内,还有个攻击?范围区,当英雄陷入?攻击范围区?内时,怪物就按一?定的概率出?动攻击,这个概率一?般比较大。然后,如果英雄不?在怪物的可?视范围区内?时,怪物它有自?己的巡逻路?线,它按照这个?路线不断的?走,总会发现到?英雄,英雄你再怎?么跑,它都会跟着?你。
当然,上面说的都?是比较简单?的了,实际游戏中?怪物还会分?得更细,比如有的怪?物能自动加?血,有的怪物还?能召唤等,这里就不再?详细讲下去?了,若有兴趣,自己再去百?度下等,怪物智能这?个涉及到人?工智能,深入下去就?是算法的问?题了。
(这是我用P?S自己弄的?,哈哈,还可以吧,程序员PS?真应该也稍?微学点!)
本文主要是?要设置一个?高级怪物A?I的一个算?法,下面是它的?流程图:
下面是本文?的一个效果?:
二、Monst?er类增加?函数
在上一讲的Mon?ster类?的增加函数?,3秒计算要?怎么来实现?呢?其实很简单?,就开一个3?秒的计数器?事件不就完?了么?
1 this-sched?ule(sched?ule_s?elect?or(Monst?er::updat?eMons?ter),3.0f);//每隔3秒计?算距离 然后就是计?算怪物和英?雄的距离了?,这中间涉及?到很多判断?,具体可以看?上面的算法?流程图,然后再参考?下代码,注意,
1 Start?Liste?n(CCNod?e*?m_her?o,CCNod?e*?m_map?) 这是开始启?动怪物监听?英雄的函数?。
首先是在M?onste?r.h中添加:
publi?c:
1
2
3
4
5
6
7
8
9
10
11
12 //在可视范围?内,怪物跟随英?雄运动
void?Follo?wRun(CCNod?e*?m_her?o,CCNod?e*?m_map?);
//判断是否攻?击
void?Judeg?eAtta?ck();
//怪物巡逻路?线
void?Monst?erSee?Run();
//怪物启动监?听英雄
void?Start?Liste?n(CCNod?e*?m_her?o,CCNod?e*?m_map?);
//监听函数,每隔3秒检?测下,计算英雄与?怪物的距离?
void?updat?eMons?ter(float??delta?);
//更新函数,如果英雄在?可视范围内?,不断触发
void?updat?e(float??delta?); priva?te:
1
2
3 CCNod?e*?my_he?ro;//当前英雄
CCNod?e*?my_ma?p;//当前地图
float????dis;//当前怪物和?英雄的距离?
然后这是它?的实现Mo?nster?.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
显示全部