第一次使用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);
//获取节点的动画组件
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
附上游戏的界面