cocos2d-x中二维游戏场景绘制方法

cocos2d-x中二维游戏场景绘制方法

1.实验目的及要求:熟悉cocos2d-x开发环境。 了解cocos2d-x中二维游戏场景绘制方法。 掌握如何使用瓦片地图编辑器。2. 实验内容与方法

完成基础实验(60分)

根据《英雄跑实验指导》文件的指导,本次实验游戏成功运行。

完成游戏(5分)

凭借自己的实力或者修改游戏代码完成关卡,成功就会出现“成功”结局画面。

修改游戏显示名称(5分)

通过修改游戏代码,你的学生姓名出现在标题栏的左上角,而不是原来的“MyGame”。

完成错误修正(10分)

通过修改游戏代码修复代码bug,如:游戏结束响应bug、分支检测bug等。

扩展游戏地图(10分)

在原地图的基础上,使用Tiled Map Editor将地图宽度扩大至2倍(高度不变),自行设计新的右半图(建议风格与左半图一致) 。

完成扩展地图(10 分)

检查并优化代码,录制游戏通关视频(包括展开地图),上传至BB系统。

三、实验步骤及过程 1、完成基础实验(60分)

根据《英雄跑实验指导》文件的指导,本次实验游戏成功运行。

(1)生成工程文件

cocos new MyGame –p –l cpp –d I:\SZU\cocos2dx_Project

(2)替换工程中的源代码和图像数据等。

(3)添加、删除现有项(类)

(4) 更改代码

修改AppDelegate.h中对应代码

(5) 调整窗口大小

(6)运行程序

2.完成游戏(5分)

凭借自己的实力或者修改游戏代码完成关卡,成功就会出现“成功”结局画面。

3.修改游戏显示名称(5分)

通过修改游戏代码,你的学生姓名出现在标题栏的左上角,而不是原来的“MyGame”。

(1)修改AppDelegate.cpp中的代码

4.完成bug修改(10分)

通过修改游戏代码修复代码bug,如:游戏结束响应bug、分支检测bug等。

(1) 分支检测bug

原版游戏:经过长树枝时会掉落,并且不会停留在树枝上通过。

如何修复该错误:

首先打开瓦片地图编辑器,将光标移动到目标像素,查询左下角,得到分支的tiledID值为149和133。(item从1开始计数,所以需要+1)

第一次修改:

添加(playerTiledID!= 149)&&(playerTiledID!= 133)

效果是在不跳跃的时候遇到树枝不会自动掉落,也就是可以在树枝上行走。

第二次修改:

添加tiledID == 149 || 平铺 ID == 133

效果是掉落时遇到树枝3D道具,但不再掉落。

具体效果请参见最终游戏视频。

(2) 游戏结束响应bug

原游戏:游戏结束后,地图仍然会更新并向前滚动,这会导致游戏结束响应错误。

修改方法:

游戏结束后游戏评测,屏幕将不再更新。

5.拓展游戏地图(10分)

在原地图的基础上,使用Tiled Map Editor将地图宽度扩大至2倍(高度不变),自行设计新的右半图(建议风格与左半图一致) 。

打开平铺地图编辑器,地图-调整地图大小,改为128*64游戏开发,并将地图长度扩大两倍。

可以支持的像素 ID 为 8、7、151、170、171、172、149 和 133。

需要和代码保持一致。

最终效果请看通关视频

6.完成拓展图(10分)

检查并优化代码,录制游戏通关视频(包括展开地图),上传至BB系统。

添加了胜利/失败音效

在config.h中添加音效文件路径

添加头文件

击败/获胜后播放音效

playEffect()中的参数需要char*游戏开发,需要对字符串进行转换和修改。 设计不合理

在原版游戏中,当玩家面前有一块土时,它仍然会掉落。 这显然是不现实的,应该予以阻止。

因此,这里进行了修改,使得进度会被土块、木条等物体阻挡。

修正案:

首先获取精灵前面的tiledID

X:(int)(player_map_x / map->getTileSize().width)
Y:(int)(map->getMapSize().height - 2 - player_map_y / map->getTileSize().height))

使用map->getLayer(MAP_BG_LAYER_NAME)->getTileGIDAt()获取ID

然后确定ID是否是诸如土块之类的物品之一。 如果是,则返回,地图移动不会更新,让小人原地奔跑,直到下一次跳跃。

注意:需要先判断小精灵是否位于地图中,否则失败时会报错。

最终效果请看通关视频。

文章来源:https://blog.csdn.net/pigpigpig64/article/details/119571902