在游戏中,很多怪物本身是会移动的,这里主要有蘑菇怪,乌龟等。

说起怪物的移动,首先在游戏里先要考虑怪物的抽象和设计。

在CMMonster.h中,有个类CMMonsterBasic,这个类抽象了所有的怪物,具体的怪物都是它的派生类,比如CMMonsterMushrooms蘑菇怪。

CMMonsterBasic继承自CCNode和CMSender,所以怪物都是渲染对象,并且有消息发送功能。

怪物基本类的接口:

virtual bool init(CCPoint ptMonsterPos,CMMario *pMario,CMGameMap *pGameMap,CMReceiver *pReceiver); 初始化

virtual bool OnCollisionMario() = 0;  与马里奥相撞处理

virtual void Dead(enMonsterDeadType DeadType); 怪物死亡

virtual bool OnCallPerFrame(float fT);  帧刷新定时调用

void MonsterTurn(); 怪物转向,比如蘑菇怪遇到阻挡它的墙时,它会转向

怪物类的基本数据

CMMario                *m_pMario;   马里奥对象

CMGameMap            *m_pGameMap; 地图对象

enMoveDirection         m_MoveDirection;  移动方向

bool                 m_bIsActivation;              是否激活

float                 m_fDropSpeedPlus;     掉落加速度

bool                 m_bIsTouched;   是否相撞

怪物的创建:

当游戏开始时,根据tmx地图中的标记,创建怪物对象并放置到响应位置,具体代码在CMGameMap的init函数中

aaarticlea/png;base64,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" alt="" />

创建完怪物之后,将其加入到数组中,这些怪物刚刚创建时候,都是不激活的,也就是不会动的

怪物的激活和移动:

触发怪物的激活的原理在于判断怪物是不是已经进入视图,如果没有进入视图,那么怪物不需要动。但是判断是否进入视图还是很麻烦的,所以在马里奥程序里,是用马里奥和怪物的距离,来触发怪物的激活的。

怪物的激活和移动都是在virtual bool OnCallPerFrame(float fT); 函数中,这个函数是CMGameMap的帧更新函数调用过来的,也就是说每次帧更新,每个怪物都会响应这个函数。在这个函数里,负责激活和移动,以及判断怪物和马里奥的碰撞。

下面我们以蘑菇怪的帧更新函数来学习怪物帧更新处理。

bool CMMonsterMushrooms::OnCallPerFrame( float fT )
{
do
{
//是否激活
if (m_bIsActivation==true)
{
//移动与碰撞
if (m_MoveDirection == enMoveLeft)
{
//用怪物左方的2个瓦片来判断移动碰撞
CCSprite* pTileSpriteLeftTop = m_pGameMap->TileMapLayerPosToTileSprite(ccp(getPositionX(),getPositionY()+getContentSize().height));
CCSprite* pTileSpriteLeftMid = m_pGameMap->TileMapLayerPosToTileSprite(ccp(getPositionX(),getPositionY()+getContentSize().height/2));
if (pTileSpriteLeftTop!=NULL || pTileSpriteLeftMid!=NULL)
{
m_MoveDirection = enMoveRight;
}
else
{
setPositionX(getPositionX()-1);
}
}
else if(m_MoveDirection == enMoveRight)
{
//用怪物右方的2个瓦片来判断移动碰撞
CCSprite* pTileSpriteRightTop = m_pGameMap->TileMapLayerPosToTileSprite(ccp(getPositionX()+getContentSize().width,getPositionY()+getContentSize().height));
CCSprite* pTileSpriteRightMid = m_pGameMap->TileMapLayerPosToTileSprite(ccp(getPositionX()+getContentSize().width,getPositionY()+getContentSize().height/2));
if (pTileSpriteRightTop!=NULL || pTileSpriteRightMid!=NULL)
{
m_MoveDirection = enMoveLeft;
}
else
{
setPositionX(getPositionX()+1);
}
} //用怪物下方的三个瓦片来判断掉落碰撞
CCSprite* pTileSpriteBottomMid = m_pGameMap->TileMapLayerPosToTileSprite(ccp(getPositionX()+boundingBox().size.width/2,getPositionY()));
CCSprite* pTileSpriteBottomLeft = m_pGameMap->TileMapLayerPosToTileSprite(ccp(getPositionX()+COLLISION_POS_ADJUSTMENT,getPositionY()));
CCSprite* pTileSpriteBottomRight = m_pGameMap->TileMapLayerPosToTileSprite(ccp(getPositionX()+boundingBox().size.width-COLLISION_POS_ADJUSTMENT,getPositionY()));
if (pTileSpriteBottomLeft!=NULL || pTileSpriteBottomMid!=NULL || pTileSpriteBottomRight!=NULL)
{
//掉落速度归零
m_fDropSpeedPlus = 0;
}
else
{
setPositionY(getPositionY()-m_fDropSpeedPlus);
//掉落加速度
m_fDropSpeedPlus += DROP_SPEED_PLUS;
}
} return (CMMonsterBasic::OnCallPerFrame(fT)||OnCollisionMario());
} while (false); CCLog("fun CMMonsterMushrooms::OnCallPerFrame Error!"); return false;
}

首先判断是否激活了,如果激活了那么则判断它的移动,它不需要按键驱动,按照时间移动它即可,遇到障碍物则返回。如果蘑菇怪在天上,则自然降落。

最后调用基类的定时刷新函数和马里奥的冲突函数。基类的定时刷新函数做什么呢

bool CMMonsterBasic::OnCallPerFrame(float fT)
{
do
{
//判断当怪物离开地图则发消息删除自己
if (getPositionX()<0 || getPositionY()<0)
{
TCmd_Remove_Monster* pData = new TCmd_Remove_Monster;
pData->pMonster = this;
SendMsg(enMsgMonsterDisappear,pData,sizeof(pData));
return true;//需要删除自己
} CC_BREAK_IF(m_pMario==NULL); //判断马里奥与当前怪物的距离,用以激活。
if (abs(m_pMario->getPositionX() - getPositionX())<MONSTER_ACTIVE_DISTANCE)
{
m_bIsActivation = true;
} return false;//不需要删除自己
} while (false);
CCLog("fun CMMonsterBasic::OnCallPerFrame Error!");
return false;
}

基类的函数主要要做的事情是:

1)如果怪物离开地图,则自杀。自杀是通过发送消息给地图类,让地图类杀掉本对象

2)如果怪物与马里奥的距离小于某个值,则激活,激活的意思就是这个怪物开始运动了

cocos2d-x游戏开发系列教程-超级玛丽09-怪物激活与移动的更多相关文章

  1. cocos2d-x游戏开发系列教程-超级玛丽10-怪物与马里奥冲突检测

    在超级玛丽游戏中,马里奥在移动,怪物也在移动,当他们遇见时,需要判断是马里奥身亡还是怪物身亡. 这个判断的代码在怪物类的检测函数实现中. 比如蘑菇怪的冲突检测函数: bool CMMonsterMus ...

  2. cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap

    背景 在上一篇博客中,我们提到CMGameScene,但是CMGameScene只是个框架,实际担任游戏逻辑的是CMGameMap类,这个博文就来了解下CMGameMap 头文件 class CMGa ...

  3. cocos2d-x游戏开发系列教程-超级玛丽06-CMGameScene

    背景 在CMMenuScene中,当用户点击开始游戏时,导演让场景进入到CMGameScene 头文件 class CMGameScene : public cocos2d::CCLayer,publ ...

  4. cocos2d-x游戏开发系列教程-超级玛丽08-消息机制

    在超级玛丽游戏里,地图类CMGameMap负责所有的程序逻辑,它包含了背景地图,包含了游戏元素精灵,当游戏中的精灵之间发生碰撞时,比如马里奥撞上砖头这种事情发生时,马里奥对象本身不知道怎么处理这个逻辑 ...

  5. cocos2d-x游戏开发系列教程-超级玛丽05-CMMenuScene

    代码下载链接 http://download.csdn.net/detail/yincheng01/6864893 解压密码:c.itcast.cn 背景 上一篇博文提到appDelegate,在该类 ...

  6. cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(五)-地图卷动

    马里奥在平移的过程中,涉及到地图的卷动问题. 在这个游戏里,地图比窗口大,窗口只是显示了地图的一部分,因此马里奥在移动的时候,移动到一定位置之后要卷动地图,否则马里奥移动到窗口右边之后......那结 ...

  7. cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(三)-按键处理

    在地图初始化好了之后,就开始移动马里奥吧,我在windows下,是使用键盘来移动马里奥的 w是跳,d是前进,a是后退,那么在程序里是怎么来获取这个按键的呢? 普通的windows程序,在按键之后,会有 ...

  8. cocos2d-x游戏开发系列教程-超级玛丽04-AppDelegate

    代码下载链接 http://download.csdn.net/detail/yincheng01/6864893 解压密码:c.itcast.cn 背景 上一篇博文提到在CCApplication: ...

  9. cocos2d-x游戏开发系列教程-超级玛丽02-代码结构

    代码下载链接 http://download.csdn.net/detail/yincheng01/6864893 解压密码:c.itcast.cn 前景回顾 上一篇博文提到超级马里奥的游戏效果,大家 ...

随机推荐

  1. 联想S720/S720i通刷刷机包 Vibe V1.0

    ROM介绍 基于官方最新S116底包制作,保证足够的稳定性. 增加VIBE元素,看起来更加大气.美观. 首次增加VIBE元素,720i执行起来无压力,720可能会有点卡.自行酌情刷入. 有bug请文明 ...

  2. c语言中重要函数

    gets函数,从标准输入读取一行文本,一行输入由一串字符组成,以一个换行符结尾: gets函数丢弃换行符,并在该行的末尾存储一个NUL字符(类似‘\0’), 然后返回一个非NULL值. 当gets函数 ...

  3. URAL 1036(dp+高精度)

    Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Pract ...

  4. HTTP协议(超文本传输协议)

    一.HTTP的简介: 超文本传输协议. 它是基于TCP连接的(默认端口号是80).所以在传输数据前客户端需向服务器发送连接请求.当服务器同意连接请求,建立连接后才可以发送数据报文. 二.HTTP的报文 ...

  5. Mac OS X 下 TAR.GZ 方式安装 MySQL 5.7+

     方法: http://www.widlabs.com/article/mac-os-x-install-mysql-57-with-tar-gz  mysql下载地址:http://www.mysq ...

  6. java 读文件 解析

    [Java]读取文件方法大全   1.按字节读取文件内容2.按字符读取文件内容3.按行读取文件内容 4.随机读取文件内容 public class ReadFromFile {     /**     ...

  7. hdu 2874Connections between cities LCA

    题目链接 给n个城市, m条边, q个询问, 每个询问, 输出城市a和b的最短距离, 如果不联通, 输出not connected. 用并查集判联通, 如果不连通, 那么两个联通块之间加一条权值很大的 ...

  8. python自学笔记(十一)关于函数及书写格式

    1.函数是抽象的第一步       1.1 有关高压锅     1.2 函数是抽象出来的结构,是总结,是方法     1.3 多用函数     2.如何定义函数        2.1 def是关键词, ...

  9. BeanFactory 和ApplicationContext

    BeanFactory和ApplicationContext对待bean后置处理器稍有不同.ApplicationContext会自动检测在配置文件中实现了BeanPostProcessor接口的所有 ...

  10. linux 多线程编程笔记

    一, 线程基础知识 1,线程的概念 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行 中必不可少的资源(如程序计 ...