使用 cocos creator 完成的第一个游戏

Cocos create项目笔记(fly Bird)

第一次使用cocos creator 来编写游戏,这个算是我的第一个自己独立完成的游戏,虽然是模仿flappy bird这款游戏来写,不过过程很开心,下面是总结一下再编写游戏时用到的一些API.
(文章底部有游戏github地址)

添加音效
//创建一个 audioClip对象
    audio:{
        default:null,
        url:cc.AudioClip
    }

//播放音效
cc.audioEngine.play(this.audio,false,1);

audioEngine.play(path, false, 0.5);
- 参数1:音频文件的路径
- 参数2:音效是否循环
- 参数3:音量的大小(1为标准音量)

位置移动
var actionTo = cc.moveBy(2, cc.p(windowSize.width - 40, windowSize.height - 40));

cc.moveBy(2, cc.p(windowSize.width - 40, windowSize.height - 40))
- 参数1:持续时间
- 参数2:x轴移动的像素值
- 参数3:y轴移动的像素值

注:

cc.moveBy() 方法是移动节点的x,y的像素距离

cc.MoveTo() 方法是将节点移动到对应的下x,y的绝对坐标下。

碰撞系统
 //获取碰撞检测系统
        var manager = cc.director.getCollisionManager();

// 开启碰撞检测系统
        manager.enabled = true;
//碰撞描边(可用于直观的显示碰撞组件的包围盒)
         manager.enabledDebugDraw = true;
         manager.enabledDrawBoundingBox = true;

首先要添加BoxCollider组件,再对Group进行节点的分组

//碰撞系统的回调函数


//碰撞产生时
/**
 * 当碰撞产生的时候调用
 * @param  {Collider} other 产生碰撞的另一个碰撞组件
 * @param  {Collider} self  产生碰撞的自身的碰撞组件
 */
onCollisionEnter: function (other, self) {
    console.log('on collision enter');

    // 碰撞系统会计算出碰撞组件在世界坐标系下的相关的值,并放到 world 这个属性里面
    var world = self.world;

    // 碰撞组件的 aabb 碰撞框
    var aabb = world.aabb;

    // 上一次计算的碰撞组件的 aabb 碰撞框
    var preAabb = world.preAabb;

    // 碰撞框的世界矩阵
    var t = world.transform;

    // 以下属性为圆形碰撞组件特有属性
    var r = world.radius;
    var p = world.position;

    // 以下属性为 矩形 和 多边形 碰撞组件特有属性
    var ps = world.points;
},

/**
 * 当碰撞产生后,碰撞结束前的情况下,每次计算碰撞结果后调用
 * @param  {Collider} other 产生碰撞的另一个碰撞组件
 * @param  {Collider} self  产生碰撞的自身的碰撞组件
 */
onCollisionStay: function (other, self) {
    console.log('on collision stay');
},

/**
 * 当碰撞结束后调用
 * @param  {Collider} other 产生碰撞的另一个碰撞组件
 * @param  {Collider} self  产生碰撞的自身的碰撞组件
 */
onCollisionExit: function (other, self) {
    console.log('on collision exit');
}

游戏暂停
cc.director.pause();

暂停正在运行的场景,该暂停只会停止游戏逻辑执行,但是不会停止渲染和 UI 响应。 如果想要更彻底得暂停游戏,包含渲染,音频和事件,请使用 Game.pause。

游戏恢复
 cc.director.resume();

恢复暂停场景的游戏逻辑,如果当前场景没有暂停将没任何事情发生。

定时器

普通定时器

this.schedule(callbac,1);

一次性定时器

this.scheduleOnce(callbac,1);
  • 参数1:调用的事件函数
  • 参数2:调用时间(1即等于1s)
动画
//获取节点的动画组件
var Anim = cc.node.getComponent(cc.Animation);

//播放动画
Anim.play('播放的动画名称');

//动画插入事件
//(首先要到当前节点的动画编辑器中加入事件名)
Anim.AnimFunction = function() {
   //执行的事件
}.bind(this);
场景转换
//首先进行场景的预加载
cc.director.preloadScene('scene1');

//加载到指定的场景
cc.director.loadScene('scene1');
数据的保存、取出
//保存数据
cc.sys.localStorage.setItem(key, value);

//取出数据
cc.sys.localStorage.getItem(key);

最后贴出游戏的github地址如果有兴趣的可以看一下,共同交流
https://github.com/Dong163/fly_bird
附上游戏的界面

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

没有更多推荐了,返回首页