[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--地图(一)




上面3张图是完成后的效果图

游戏已完成,除了英雄外,基本还原了90%的游戏内容,一共13关,20种防御塔,30+种敌人,如上图,以假乱真吧

下面从地图模块起介绍我的方法,如有更好的方法,请留言一起讨论,游戏资源下载原版游戏数据包,解压即可

推荐一款软件,TextureUnpackerRelease1.04可以分割plist形式的图片,提高效率

经过一个月学习也发现之前有很多化简为繁的错误哭

----------------------------------------------------------------------------------------------------------------------------------------------------

地图模块我采用3层结构,从下到上分别为地图层,触摸层,按键层


地图层负责地图的绘制,添加防御塔、敌人等,触摸层负责拦截一些触摸事件,添加技能/商店技能触摸响应,同时兼顾防御塔升级菜单弹出层,按键层则负责技能和商店按键、玩家生命金钱状态,暂停按键,暂停菜单等。


-----------------------------------------------------------------------------------------------------------------------------------------------------


首先是地图层,新建一个基类BaseMap,基层与Layer

class BaseMap : public Layer
{
public:
	 CREATE_FUNC(BaseMap);
	//当前关卡
	CC_SYNTHESIZE(int, level, Level);
	//绑定按键层
	void bindPlayerStateMenu(PlayerStateMenu* playerState);
	Sprite* mapSprite;
	//触摸层
	TouchLayer* mTouchLayer;
protected:
	//存储每一波敌人信息容器
	std::vector<std::vector<Vector<GroupMonster*>>> waveVector;
	//存储敌人路线
	std::vector<std::vector<std::vector<Point>>> path;
	//下一波敌人提示(玩过游戏的人知道就是那个一闪一闪的骷髅头)
	Vector<WaveFlag*> waveFlags;
	void addWaveProgressBars(std::vector<Point> waveFlagLocations);
	void showWaveProgressBars(float dt);
	virtual void addWaves(float dt);
	//添加怪物
	virtual void addMonsters(float dt);
	//初始化地图
	void initMap();
	//添加不同地图装饰物
	virtual void addOrnament(){};
	//添加建塔点
	virtual void addTerrains(){};
	//退出
	virtual void onExitTransitionDidStart();
	virtual void onExit(){};
	//其他
};



下面是我采用的plist格式,用文件的形式来保存每一关的信息

<dict>
	<key>data</key>
    		<array>
			<dict>
				<key>gold</key>
				<string>500</string>
				<key>life</key>
				<string>20</string>
				<key>wave</key>
				<string>3</string>
			</dict>
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值