MFC游戏开发笔记九 游戏中的碰撞判定初步&怪物运动简单AI2014-11-03在上一节笔记中,雾央预告说打算这一节讲流畅动画的改进以及重新封装代码的,但是看起来似乎没有多少同学感兴趣,所以雾央决定把他们往后挪一挪,先来讲解点有意思的东西。在游戏之中,碰撞判定是必不可少的一块,在许多地方都需要用到。比如说在即时战斗游戏中,当人物碰到怪物的时候,人物是会扣血的;在回合制中,碰到怪物是要进入战斗场景的;游戏之中也还有一些荆棘之类的东西,还有非鼠标控制拾取物体等等,这些都涉及到了碰撞判定。游戏之中,还有一块很重要的部分:障碍物判定,即玩家在运动的时候,需要判定哪些地方可以通过,哪些地方可以到达,这部分内容比较多,雾央将在下一节继续讲解,感兴趣的同学请保持关注。在这一节笔记中,雾央要实现的demo是怪物追逐人物,当两者碰撞的时候给出提示信息。一、简单怪物运动AI相比于应用软件,游戏软件中包含的知识太多了,每一块拿出来都可以写一本厚厚的书,比如怪物AI这一部分。AI:Artificial Intelligence,即人工智能,人工智能研究如何用计算机去模拟、延伸和扩展人的智能;如何设计和制造更聪明的计算机以及智能水平更高的智能计算机等等。游戏人工智能博大精深,雾央也只是了解很少的一部分,本教程也只是面向游戏初学者,所以那些高深的基因算法、神经网络、蚂蚁算法等有待大家以后自己去探索。本文将要实现的怪物运动AI是:怪物主动追逐人物。首先,怪物追逐人物,在游戏中表现的效果就是两者距离不断靠近。归结到算法就是
if(Monster.x<Hero.x) Monster.x++;else Monster.x--;if(Monster.y<Hero.y) Monster.y++;else Monster.y--;
当然大家还可以让怪物更智能,比如让怪物依据当前的血量和玩家的血量来决定是不是继续追击,在Dota AI地图中,敌方英雄AI在半血的时候一般就会回家补给状态去了,但是如果玩家的血量比电脑还要少,AI一般会选择奋不顾身的追杀。再比如大家可以给怪物加上活动范围,在玩家进入怪物的活动区间时才选择追逐玩家,当玩家与怪物之间的距离达到一定值时,放弃追击,这个都不不难实现的,只是在上面代码的基础上增加更多判断的代码而已。在后面雾央打算讲解一个完整的游戏demo,在里面将会继续完善怪物AI。下面给大家看一下实现效果一开始,玩家出现在地图左下角,怪物出现在地图右上角。

更多精彩内容:http://www.bianceng.cn/Programming/VC_NET/