请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 1218|回复: 7

《Cocos Creator游戏实战》关卡功能实现

[复制链接]

14

主题

24

帖子

262

积分

中级会员

Rank: 3Rank: 3

积分
262
发表于 2020-1-27 06:20:46 | 显示全部楼层 |阅读模式
                                            《PyInstaller打包实战指南》                        好不容易解决了代码中的bug,又在PyInstaller打包问题上浪费了很多时间,最后可能还解决不了。其实,用PyInstaller来打包其实并不存在所谓的坑,只是大多数人对它不了解才导致了时间浪费。                        
la_vie_est_belle                                                                ¥9.90                                                                                                                        去订阅
                                                                                                                                                     关卡功能实现

创建节点
设置关卡信息
实现关卡界面
为预制添加脚本
完善Game.js逻辑
在上一节教程中我们讲解了打砖块的主要功能与逻辑实现,在这一篇教程中,笔者会在它的基础上增加关卡功能(建议先阅读上一节教程)。
运行效果如下:

 
Cocos Creator版本:2.2.0
后台回复"关卡",获取该项目完整文件:

 
创建节点


1. bg就是一个背景图片。
 
2. levelsLayout为一个布局节点,节点上的Layout组件属性设置如下(除了Type和Resize Mode,其他属性大家可以根据需要自行修改):

该节点用来对各个关卡进行布局,完成后样子如下:

 
3. level是一个预制节点,其子节点num用于提示当前关卡数,star节点用于提示是否已经通关(没有通关的时候为灰色,通关后变为黄色)。另外num节点初始状态不可见,只有玩家通过当前关卡后,后面一个关卡的数字才会显示(当然第一关在一开始就要显示数字)。

 
设置关卡信息

我们在scripts文件夹中新建一个Settings.js脚本,编写如下代码:
  1. // Settings.jslet settings = [    {                                       level: 1,                   // 第1关        row: 3,                     // 行数        col: 3,                     // 列数        spaceX: 20,                 // 列间隔        spaceY: 20,                 // 行间隔        brickWidth: 200,            // 砖块宽度        brickHeight: 100,           // 砖块高度        levelState: 'UNLOCKED',     // 关卡状态        transparentBricks: [[1,0], [2,2]]  // 刚开始就透明的砖块    },    {           level: 2,                   // 第2关        row: 6,        col: 6,        spaceX: 10,        spaceY: 10,        brickWidth: 120,        brickHeight: 70,        levelState: 'LOCKED',        transparentBricks: [[3,5], [4,1], [3,4]]    },    {                                       level: 3,                   // 第3关        row: 9,        col: 9,        spaceX: 10,        spaceY: 10,        brickWidth: 100,        brickHeight: 50,        levelState: 'LOCKED',        transparentBricks: [[7,5], [3,1], [5,7],[7,2],[6,8],[7,7]]    },    {                                       level: 4,                   // 第4关        row: 12,        col: 15,        spaceX: 5,        spaceY: 5,        brickWidth: 80,        brickHeight: 40,        levelState: 'LOCKED',        transparentBricks: [[1,1], [2,2], [3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]]    },    {                                       level: 5,                   // 第5关        row: 12,        col: 15,        spaceX: 5,        spaceY: 5,        brickWidth: 80,        brickHeight: 40,        levelState: 'LOCKED',        transparentBricks: [[1,1], [2,2], [3,3],[4,4],[5,5],[6,6],[7,7],[8,8],[9,9]]    },    {                                       level: 6,                   // 第6关        row: 13,        col: 13,        spaceX: 4,        spaceY: 4,        brickWidth: 60,        brickHeight: 30,        levelState: 'LOCKED',        transparentBricks: [[9,9], [1,1], [3,4],[5,4],[5,6],[7,6],[7,8],[8,10],[9,1]]    },]export {settings};
复制代码
在这个脚本中我们就新建了一个JSON变量settings,其中每个数组元素都包含了相应关卡的具体配置(这里共有六个关卡)。这里笔者讲一下levelState和transparentBricks这两个键:

  • levelState用来判断当前关卡的状态:未解锁,解锁或通过。       
  • 通过控制transparentBricks我们就可以创建出形状各异的砖块布局。
最后用export输出该变量,我们会在其他脚本中调用。
 
实现关卡界面

新建Select.js脚本,编写如下代码:
[code]// Select.jsimport {settings} from './Settings.js';cc.Class({    extends: cc.Component,    properties: {        levelPrefab: cc.Prefab,        levelsLayout: cc.Node    },    // LIFE-CYCLE CALLBACKS:    onLoad () {        this.initLevels();    },    initLevels () {        if (!cc.sys.localStorage.getItem('settings')) {            for (let i=0; i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:2020年1月23日山师比赛题解
下一篇:初学者,第一个桌球小游戏,第一次发博。
回复

使用道具 举报

0

主题

25

帖子

535

积分

高级会员

Rank: 4

积分
535
发表于 2020-2-8 03:21:12 | 显示全部楼层
这东西我收了!谢谢楼主![www.12360.co]
回复

使用道具 举报

0

主题

8

帖子

178

积分

注册会员

Rank: 2

积分
178
发表于 2020-2-9 19:00:02 | 显示全部楼层
楼主,我太崇拜你了![www.12360.co]
社区不能没有像楼主这样的人才啊!
回复

使用道具 举报

0

主题

15

帖子

325

积分

中级会员

Rank: 3Rank: 3

积分
325
发表于 2020-2-10 18:54:11 | 显示全部楼层
其实我一直觉得楼主的品味不错!呵呵![www.12360.co]
回复

使用道具 举报

0

主题

22

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
发表于 2020-2-11 00:42:02 | 显示全部楼层
楼主,大恩不言谢了![www.12360.co]
回复

使用道具 举报

0

主题

32

帖子

682

积分

高级会员

Rank: 4

积分
682
发表于 4 天前 | 显示全部楼层
这个帖子不回对不起自己![www.12360.co]
回复

使用道具 举报

0

主题

19

帖子

409

积分

中级会员

Rank: 3Rank: 3

积分
409
发表于 3 天前 | 显示全部楼层
感谢楼主的无私分享![www.12360.co]
回复

使用道具 举报

0

主题

24

帖子

514

积分

高级会员

Rank: 4

积分
514
发表于 25 分钟前 | 显示全部楼层
楼主太厉害了!楼主,I*老*虎*U![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-29 13:51 , Processed in 0.091479 second(s), 25 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表