cocos2d-x游戏开发系列教程-超级玛丽09-怪物激活与移动

时间:2023-03-09 19:58:25
cocos2d-x游戏开发系列教程-超级玛丽09-怪物激活与移动

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

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

在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)如果怪物与马里奥的距离小于某个值,则激活,激活的意思就是这个怪物开始运动了