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