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

本文深入解析CMGameMap在cocos2d-x游戏开发中的作用,涵盖背景、成员变量及核心函数如CreateGameMap、Init等。CMGameMap包含道具、怪物、砖头等元素的管理,处理马里奥的移动、碰撞及地图逻辑,是游戏逻辑的核心部分。
摘要由CSDN通过智能技术生成

背景

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


头文件

class CMGameMap : public cocos2d::CCTMXTiledMap ,public CMReceiver
{
protected:
	enum 
	{
		enTagMario = 998,				//通过这个Tag查找Mario
	};
protected:
	CCArray	*m_pArrayItems;				//金币数组
	CCArray *m_pArrayMonsters;			//怪物数组
	CCArray *m_pArrayBlocks;				//砖块数组

	float m_fMapMove;					//地图偏移量
	float m_fDropSpeedPlus;				//掉落速度
	float m_fJumpSpeed;					//跳跃速度

	bool m_bIsLeftKeyDown;				//左键是否按下
	bool m_bIsRightKeyDown;				//右键是否按下
	bool m_bIsJumpKeyDown;				//跳跃键是否按下
	bool m_bIsHeroDead;					//是否死亡
public:
	static CMGameMap* CreateGameMap(const char* pFileName);

	// 返回地图指定位置上的图块
	CCSprite*	TileMapLayerPosToTileSprite(CCPoint TileMapLayerPos);			
	//通过地图块坐标返回地图块类型
	enumTileType	TileMapPosToTileType(CCPoint HeroPos,float fMapMove);					
	//地图块坐标转换为地图层坐标
	CCPoint		TileMapPosToTileMapLayerPos(CCPoint TileMapPos);							
	//地图层坐标转换为世界坐标
	CCPoint		TileMapLayerPosToWorldPos(CCPoint TileMapLayerPos,float m_fMapMove);
	//地图层坐标转换为地图块坐标
	CCPoint		TileMapLayerPosToTileMapPos(CCPoint TileMapLayerPos);
	//返回地图偏移量
	float		GetMapMove();
	virtual void OnCallPerFrame(float dt);
protected:
	virtual bool Init();
	
	void		 onExit();

	//Mario碰撞
	void	MarioMove(float fT);
	//顶砖块
	void	HitBlock(CCPoint TileMapLayerPos);
	//删除砖块
	void	DeleteBlock();

	//消息处理
protected:
	virtual void OnMsgReceive( int enMsg,void* pData,int nSize );
	
	void OnSubMsgItemRemove(void *pData ,int nSize);	//[道具移除]消息处理

	void OnSubMsgMarioLevelUp();						//[马里奥长大]消息处理

	void OnSubMsgMonsterDisappear(void *pData,int nSize);//[怪物消失]消息处理

	void OnSubMsgStamp(void *pData,int nSize);			//[被马里奥踩踏]消息处理
	
	void OnSubMsgBlockBoxHitted(void *pData,int nSize);	//	[砖块被顶]消息处理

	void OnSubMsgMarioBeHurt();							//马里奥被伤害的消息处理
};

从头文件上CMGameMap是从CCTMXTileMap派生,CCTMXTileMap是cocos2dx中的一个瓦片地图类ÿ
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值