精华内容
下载资源
问答
  • CocosCreator 消灭星星

    2018-03-08 10:42:13
    Cocos Creator消灭星星,方便学习Creator 的同学参考
  • cocos creator 消灭星星

    2018-08-28 15:15:01
    消灭星星小游戏,cocos creator + javascript,关卡类型。与市面上的消灭星星差不多,比较简单,适合初学者学习
  • 先来说下要实现的功能 根据一定规则生成关卡 ...StarRoot是一个空节点,后面创建的星星方块都会加到这个节点上 ActionRoot是一些做动作、动画节点的父节点,像comb特效就在这个节点上 UIRoot,就是用...

    先来说下要实现的功能

    • 根据一定规则生成关卡
    • 实现消除等逻辑
    • 游戏结束检测
    • 本地缓存游戏进度

    准备工作

    建好工程,使用编辑器搭建游戏场景。我搭建的场景如下图:
    屏幕快照 2018-10-14 下午8.58.48.png
    简单说明下:

    • New Sprite是场景中的背景图片
    • StarRoot是一个空节点,后面创建的星星方块都会加到这个节点上
    • ActionRoot是一些做动作、动画节点的父节点,像comb特效就在这个节点上
    • UIRoot,就是用户界面上的根节点,像游戏的最高分、当前分数、当前第几关等等,都放在这个节点上
    • ResultRoot是结算界面的根节点。显示灰色是因为没有激活这个节点
    • SoundCTL也是一个空节点,主要作用是在节点上挂载一个脚本处理游戏的声音

    制作星星预制

    方法参考官方文档
    屏幕快照 2018-10-14 下午9.40.03.png
    很简单,根节点下只有一个精灵节点。显示蓝色就表示是一个预制。主要说一下star上的脚本组件starCtr.js

    因为不止一种星星,所以需要改变New Sprite的纹理。星星有下面几个属性:

    properties: {
        _starType: 0,
        _gx: 0,
        _gy: 0,
        starSprite: cc.Sprite,
        starSpriteFrames: {
            default: [],
            type: cc.SpriteFrame,
        },
    },

    starSprite对应上图New Sprite的Sprite组件;starSpriteFrames存储了所有星星的纹理;_starType表示星星的类别,它决定了starSprite显示starSpriteFrames中的哪个纹理;_gx、_gy用来存储星星方块在10x10地图中的格子坐标。

    initStar (type, gx, gy) {
        this._starType = type;
        this.starSprite.spriteFrame = this.starSpriteFrames[this._starType];
        this.updateGrid(gx, gy);
    },
    updateGrid (gx, gy) {
        this._gx = gx;
        this._gy = gy;
    },

    initStar星星的初始化函数,updateGrid用来更新星星的坐标位置

    在预制里还做了一个操作,就是处理用户的点击操作,所以在脚本的start函数里监听触摸。start是组件脚本生命周期的回调函数,会在组件第一次激活前,也就是第一次执行update之前触发。

    start () {
        this.node.on(cc.Node.EventType.TOUCH_START, function (event) {
            //TODO:触摸处理
        }, this);
    },

    具体的触摸处理后面说。最后看下属性检查器里的脚本组件:
    屏幕快照 2018-10-24 下午4.40.49.png

    生成关卡数据

    • 生成规则:每个格子随机生成星星。(这里选取一个简单的逻辑规则,自己可以根据实际情况修改星星生成的逻辑)
    • 用一个二维数组存储10×10的地图数据

    下面介绍两个对象,分别创建两个脚本gamedata.js、Utils.js
    gamedata处理游戏的数据,像游戏的得分、当前第几关、地图数据等等都存储在里面。

    // gamedata.js
    var level = 0; //记录当前关卡
    var targetScore = 0; //当前关卡目标分数
    var currScore = 0; //当前得分
    var bestScore = 0; //历史最高得分
    var starMatrix = null; //地图数据,二维数组
    var starSprite = []; //一维数组,存储星星的Node
    
    module.exports = {
        level: level,
        targetScore: targetScore,
        currScore: currScore,
        bestScore: bestScore,
        starMatrix: starMatrix,
        starSprite: starSprite,
    };

    Utils主要是处理一些公用的逻辑,像关卡生成规则的逻辑就放这里了。

    // Utils.js
    var Config = require("psconfig");
    
    var randomColorByArray = function (array) {
        var i = Math.floor(Math.random() * array.length);
        return array[i];
    }
    
    //随机生成星星关卡逻辑
    function initMatrixDataPortraitRandom () {
        var matrixData = new Array(Config.matrixRow);
        for(var row = 0; row < Config.matrixRow; row++) {
            matrixData[row] = new Array(Config.matrixCol);
            for(var col = 0; col < Config.matrixCol; col++) {
                matrixData[row][col] = randomColorByArray(Config.totalColors);
            }
        }
        return matrixData;
    };
    
    module.exports = {
        initMatrixDataPortraitRandom: initMatrixDataPortraitRandom,
    };

    脚本Utils.js加载了另一个脚本psconfig.js,它主要存放游戏的一些配置,代码如下:

    //psconfig.js
    var cellSize = 73; //星星纹理的边长
    var matrixRow = 10; //地图的行数(高)
    var matrixCol = 10; //地图的列数(宽)
    var totalColors = [0,1,2,3,4]; //表示五种星星
    
    module.exports = {
        cellSize: cellSize,
        matrixRow: matrixRow,
        matrixCol: matrixCol,
        totalColors: totalColors,
    };

    到这里,关卡数据已经生成,下面就是根据生成的数据绘制星星地图。

    绘制星星

    一开始提到,创建的所有星星都会放在StarRoot的节点上。场景中StarRoot是一个空节点,有一个脚本组件matrixCtr,看下图:
    屏幕快照 2018-10-26 下午4.13.48-side.jpg
    单个格子边长73,格子间有2个像素的缝隙,所以StarRoot是边长748的正方形,把它的锚点设置在左下角,为了方便格子坐标和像素位置坐标之间的转换。

    在Utils脚本上添加两个函数用于坐标之间的转换。

    //Utils.js
    function grid2Pos (gx, gy) {
        var px = Config.cellSize * 0.5 + (Config.cellSize + 2) * gy;
        var py = Config.cellSize * 0.5 + (Config.cellSize + 2) * gx;
        return cc.v2(px, py);
    };
    function pos2Grid (px, py) {
        var gx = (py - Config.cellSize * 0.5) / (Config.cellSize + 2);
        var gy = (px - Config.cellSize * 0.5) / (Config.cellSize + 2);
        return cc.v2(Math.round(gx), Math.round(gy));
    };

    最后别忘了导出,在module.exports中添加变量:

    module.exports = {
        grid2Pos: grid2Pos,
        pos2Grid: pos2Grid,
        initMatrixDataPortraitRandom: initMatrixDataPortraitRandom,
    };

    下面说一下脚本matrixCtr.js
    上图中可以看到,脚本中有两个预制类型的属性star、particle,其中star就是开始制作的星星预制。particle主要是播放粒子,是星星消除时的特效。

    properties: {
            starPrefab: cc.Prefab,
            starParticle: cc.Prefab,
            _starPool: null,
            uiCtr: cc.Node,
            actCtr: cc.Node,
            combCtr: cc.Node,
            soundCtr: cc.Node,
    },

    因为游戏中要频繁创建和销毁星星,而这些操作是非常耗费性能的,所以这里使用了对象池。关于它的介绍和使用方法参考官方文档

    //matrixCtr.js
    var Utils = require("Utils");
    var Config = require("psconfig");
    var GameData = require("gamedata");
    
    onLoad () {
        //初始化对象池
        this._starPool = new cc.NodePool();
        for(var i = 0; i < Config.matrixCol*Config.matrixRow; ++i) {
            var star = cc.instantiate(this.starPrefab);
            this._starPool.put(star);
        }
    }
    onDestroy () {
        this._starPool.clear();
    },
    createStar (type, gx, gy) {
        var star = null;
        if (this._starPool.size() > 0) {
            star = this._starPool.get();
        }
        else {
            star = cc.instantiate(this.starPrefab);
        }
        star.setPosition(Utils.grid2Pos(gx, gy));
        this.node.addChild(star);
        var starCtr = star.getComponent("starCtr");
        starCtr.initStar(type, gx, gy);
        return star
    },

    注意,这里省略了cc.Class等一些通用代码,有了createStar函数,我们就可以根据前面生成的数据来绘制星星了。

    // matrixCtr.js
    initMatrix () {
        for(var row = 0; row < GameData.starMatrix.length; row++) {
            var cols = GameData.starMatrix[row];
            for(var col = 0; col < cols.length; col++) {
                var type = cols[col];
                var index = Utils.indexValue(row, col);
                if (type >= 0) {
                    var node = this.createStar(type, row, col);
                    GameData.starSprite[index] = node;
                }
                else {
                     GameData.starSprite[index] = null;
                }
            }
        }
    },

    initMatrix函数中使用了Utils脚本中的indexValue函数。这是因为存储星星数据的是二维数组,存储星星Node的是一维数组,它是两者索引的转换。当然,存储星星Node也可以使用二维数组。

    //Utils.js
    function indexValue (row, col) {
        return row * Config.matrixCol + col;
    };
    function resolveIndex (index) {
        var col = index % Config.matrixCol;
        var row = (index - col) / Config.matrixCol;
        return cc.v2(row, col);
    };

    别忘了在module.exports中导出变量,这里就省略了,最后上一张效果图。
    屏幕快照 2018-10-26 下午5.47.41.png

    写在最后

    欢迎订阅,获取更多内容,掌握最新动态

    qrcode_for_gh_1c10b944728f_258-2.jpg

    如有疑问,欢迎添加微信讨论(验证:鸡毛信)

    IMG_0830.jpg

    几个约定

    • 不提供源码下载
    • 文章会至少包含90%的源码,对60%的源码有说明
    • 如转载文章,请务必注明

    转载于:https://www.cnblogs.com/monster0924/p/9858500.html

    展开全文
  • 本课程以实战为主,游戏中需要什么功能,我们就讲解相应的知识点,这样学到的知识会马上用起来也就不会枯燥。 本课程讲解相当完整,从最基础的软件安装开始,到打出游戏安装包,到接入头条穿山甲广告SDK,一套完整的...
  • https://docs.cocos.com/creator/api/zh/classes/Prefab.html?h=prefab 看下预制的制作方法: 在编辑器中 拖拽设计的节点 完成后拖拽至res对应目录(预制文件最好单独用文件夹存放 便于资源管理) star预制完成后...

    继续前文,hero和对应逻辑已经添加完成,后面添加障碍物以及碰撞逻辑

    这里用到了预制,

    预制:Prefab

    个人觉得 预制是最能体现creator设计思想的体现 

    https://docs.cocos.com/creator/api/zh/classes/Prefab.html?h=prefab

    看下预制的制作方法:

    在编辑器中 拖拽设计的节点 完成后拖拽至res对应目录(预制文件最好单独用文件夹存放 便于资源管理)

    star预制完成后,按照文档逻辑 添加随机生成的方法 这里有几点需要注意

    1:正如文档所言

    这一部分 节点设定需要关注下

    2:预制文件的使用

    你可以把预制当作一个layer或者node 如 在游戏中我们经常会有各种二级 三级界面  如设置界面 背包等 这部分都可以作为预制

    待你要的预制文件编辑完毕后 便可加入对应场景中 

    3:game代码完成后,scene中选中canvas节点 拖拽game.js到属性中 然后拖拽对应节点到属性即可

    完成后 run 查看运行效果 

     

    关注下 instantiate()用于克隆指定的任意类型的对象,或者从 Prefab 实例化出新节点。返回值为 Node 或者 Object。

    这个也是我们用来加载预制的接口

     

    4:添加消除逻辑

    消除逻辑的核心是 hero 和障碍物 距离小于L 即判定碰撞 完成消除逻辑  

    这里看下 getComponent()方法 

    5:音频上面讲到过 

     

    运行 看下效果

     

    展开全文
  • cocos creator的星星点点消游戏源码,适合初学者学习,需要下载cocos creator2.0.10版本后安装然后根据提示安装完成后,打开这个项目就可以尝试运行。类似消灭星星玩法
  • 前面已经完成了游戏的主逻辑,后面我们可以添加其他逻辑丰富游戏 1.添加slider控制背景音乐 slider的具体属性可以在文档里看下 这里不再赘述。 逻辑很简单 ...1:UI上添加slider,代码中做上绑定。...

    前面已经完成了游戏的主逻辑,后面我们可以添加其他逻辑丰富游戏

    1.添加slider控制背景音乐

    slider的具体属性可以在文档里看下 这里不再赘述。

    逻辑很简单

    1:UI上添加slider,代码中做上绑定。

    2:

    game上bgmusic做上绑定

    3:代码部分

    给slider添加监听,回调中 关键点

    this.bgMusic.volume = (this.slider.progress)

    (this.slider.progress) // slider进度 0 - 1

    this.bgMusic.volume // 设置音量大小 0 - 1

    4: run 模拟器 滑动slider 查看效果

     

    这里只是简单模拟下slider控制音量,我们真正要完成的是

    1:添加home界面 home中包含开始游戏、设置等

    2:点击开始游戏,场景切换至游戏界面

    3:小局结算 包含得分 排名等 

    4:游戏逻辑完成 

    5:尝试打包 接入各种SDK等 走完整个流程

    展开全文
  • run 2:添加控制hero方向 添加键盘事件响应函数 onKeyUp 和 onKeyDown https://docs.cocos.com/creator/api/zh/classes/SystemEvent.html?h=cc.systemevent.on 这里看下SystemEvent API 这里 也就是对键盘监听 ...

    先来看下项目运行效果

    分析下游戏中元素:

    1:背景

    2:主角:hero

    3:障碍物

    4:得分显示

    第一步 完成场景搭建 添加背景图

    1.新建Game Scene ,并置为启动场景 导航栏点击 项目-项目设置-项目预览-初始化场景 

    然后拖拽背景到scene 中 作为背景 修改背景坐标 和 尺寸

    2.添加地面 设置尺寸

    3.添加hero

    坐标和锚点按照文档中的设置就行  这里要注意把新建的节点要置在canve中 

    第二部: 添加对hero的控制

    参照文档代码 

    下一步 做代码和节点绑定 

    选中Player节点 拖拽脚本到属性部分 即可做对应绑定

     继续看文档 这里说到了缓动 

    看下文档 研究下缓动

    这里可以看到,其实正如文档中说明的一样,如cocos2d-x中的Action功能类似,

    看下这里this,也就是我们绑定的hero节点

    看下运行效果 

    hero跳动的逻辑:

     添加hero-编写js代码-绑定脚本-run

     

    2:添加控制hero方向

    添加键盘事件响应函数 onKeyUp 和 onKeyDown

    https://docs.cocos.com/creator/api/zh/classes/SystemEvent.html?h=cc.systemevent.on  这里看下SystemEvent API

    这里 也就是对键盘监听 ,KEY.a KEy.d 也就是对键盘的监听 a d代表左右,

    然后看update的逻辑,update会事实监听键盘输入,

     完成后  run 看下效果 可以左右控制移动

    展开全文
  • 消除星星游戏源码 cocoscreator 实现游戏基本功能不错的学习 资料
  • 小游戏开发 之 消灭星星cocos-creator) 最近开始搞小游戏,只是算练练手,消灭星星太经典了,非常适合拿来练手,核心流程就是《创建方块》、《消除》、《移动》、《结算》。这里只挑消除和结算讲一下。 方块消除 ...
  • 如何使用cocos creator开发跨平台游戏 ** 三年前,微信正式发布了小程序开发框架,开启了一个新的流量时代,两年前,第一个微信小游戏跳一跳正式发布,一夜之间就疯传至数亿的用户。 作为一款轻量化的游戏,加上背...
  • 2 * 创建星星类(所有的星星都在这里创建,星星拥有的所有性都在这里实现) 3 */ 4 var GameCreateStar = ccui.ImageView.extend( 5 { 6 type:0,//星星的类型(不同数字代表不同颜色的星星); 7 normalType:...
  • 这是在何自建博客上下载的源文件,稍加修改适应cocos2d-x 3.8.1后的。 http://blog.csdn.net/hezijian22/article/details/39137487这是他的博客地址
  • 1.广告的创建与现实必须在主线程中进行; 2.SDK要求的全新必须要开通,其中android.permission.GET_TASKS 权限会被提示为已经弃用,可以在这条权限上一行添加注释 <!--suppress ...
  • 消灭星星源码及资源

    2016-09-24 13:12:26
    对书中源码做了一定的修改,更正,以及简化,方便直接对该游戏开发思路学习
  • 当玩家退去游戏后,下次进入游戏可以接着上一次的游戏进度继续游戏; 1 /* 2 * win7下本地存储玩家的数据 3 */ 4 var PlayerLocalData = {}; 5 /* 6 * 玩家数据结构 7 */ ...11 ...
  • 消灭星星cocoscreator上的一个demo,结合我们之前学习的各种控件的使用,可以开始组合的使用这些组件来进行游戏的开发了。 1 首先是搭建界面。需要资源的朋友可以去cocos官方下载消灭星星的资源。 新建一个项目...
  • xiaomeiStar.rar

    2020-05-15 10:29:34
    消灭星星 cocoscreator js 源码
  • cocos学习随记2-预制体

    2021-07-21 16:21:37
    预制体的作用 1.批量创建相同类型的节点 可以在层级管理器新建节点设置...例如:消灭星星中使用的预制体:源码 https://github.com/cocos-creator/tutorial-first-game 这些小星星出现的位置随机,运动的轨迹随...
  • PopStar.rar

    2019-07-13 10:50:34
    只上传了assets目录,所以小伙伴要安装最新的cocos-creator才能运行,项目里增加了小彩蛋(其实也不算啦),大家可以玩一玩,有红包。
  • 消灭星星 这个游戏的核心攻略的,一般人看到有3个或4个连接在一起的星星就直接点击了,看到有5个6个的会非常高兴以为赚到了,下手的速度更快!我想说的是,这种策略是 完全错误的 ! 星星消除的核心思想是做 连接 ,...
  • Creator星球资源索引

    2019-08-18 08:21:28
    消灭星星, 消除, 星星 游戏二维码 BigBear的桌球小游戏 桌球 工程源码 Shawn的节点拖动组件 节点拖动组件 挂到节点可自由拖动 Cocos Creator PPT creator-ppt 用Creator做的PPT演示 二维码组件 二维码组件 用...
  • 流利说®少儿英语是流利说®为 3-8 岁儿童定制的一款英语启蒙类产品,本次邀请到 UI 设计师 kelly,从视觉设计与输出的角度,详细地介绍该产品游戏题型的...△ 收集糖果△ 警察抓小偷△ 切水果△ 消灭细菌视觉设计...
  • 资源消消看附代码

    2014-06-14 13:51:17
    煎蛋的界面,但是附有消消看的一些功能。可以供大家鉴赏
  • GameEvent这里比较特殊,只能在当前项目中使用,我将它归类到了【奎特尔】消灭星星类别了。还有几个比如 LoginWx 是后来添加的,还未来的及将他归类到组件菜单上,具体做法如下: cc.Class({ extends: cc.Component...
  • 奎特尔英雄联盟

    2019-01-09 14:56:48
    消灭星星,玩法丰富,我妈妈最爱的游戏,60多岁的人了,有时还玩到凌晨一两点 ! 论坛地址:https://forum.cocos.com/t/6-4/58845 「cocos亨亨」的太空弹球机 弹球机,画面细腻,让我想机小时候的小霸王游戏! 论坛...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

cocoscreator消灭星星