您的位置:首页 > 移动开发 > Cocos引擎

CocosEditor-java写flappyBird的过程记录【更新中】

2014-10-04 22:13 337 查看

1.先搭建好环境

http://blog.cocoseditor.com/?p=733

一开始就搭好android环境,但上面的链接只能在android环境下调试,新设置一个java config就可以调试java项目了



2.导入图片资料

可参考官网,如果要导入别人的plist文件,可参考下文
http://blog.csdn.net/xzongyuan/article/details/39781993

3.实现主菜单

加入三个sprite,并添加动画功能

这篇第十点提到,实现了合并动画功能
http://blog.csdn.net/xzongyuan/article/details/39780431


4.设计游戏界面

先不管碰撞检测,设计柱子等间隔出现。有三种思路:

1.可以for循环产生等间隔柱子。js源码就是这种,要设定好每个pipe的起始位置

2.下面是失败版本。设计了3个柱子,虽然等间隔出现,但是pipe3的第二轮等待时间点还没设计好,造成pipe1和pipe3重叠,仅供参考。

public void createPipeBarrier(){

float pipeWidth = 160;
float designWidth = 720;
//左右两个pipe之间的空隙
float pipeDistance = 300;
//左右两个pipe之间的偏移
float pipeOffset = pipeDistance+pipeWidth;
float timeTotal = 2;
//pipe1出现运行至pipe消失的总长度
float disTotal = designWidth+pipeWidth;

//以第一个pipe的移动速度为参考速度
float speed = disTotal/timeTotal;
float startX1 = designWidth;
float startX2 = designWidth+pipeOffset;
final float startX3 = designWidth+pipeOffset*2;

Sprite pipeBar1 = NodeReader.create().readSprite("layouts/pipeBarrier.cce");
pipeBar1.setPositionX(startX1);
// pipeBar1.setTag(Constant.TAG_PIPE_1);
pipeBar1.runAction(RepeatForever.create(Sequence.create(
MoveTo.create((startX1+pipeWidth)/speed,new Vec2(-pipeWidth,0)),
MoveTo.create(0, new Vec2(startX1, 0)),
DelayTime.create((startX3+pipeWidth)/speed-(startX1+pipeWidth)/speed)
)));

//固定两个pipe之间的距离

Sprite pipeBar2 = NodeReader.create().readSprite("layouts/pipeBarrier.cce");
pipeBar2.setPositionX(startX2);
//  pipeBar2.setTag(Constant.TAG_PIPE_2);
pipeBar2.runAction(RepeatForever.create(Sequence.create(
MoveTo.create((startX2+pipeWidth)/speed,new Vec2(-pipeWidth,0)),
MoveTo.create(0, new Vec2(startX2, 0)),
//消失后,等待所有pipe消失
DelayTime.create((startX3+pipeWidth)/speed-(startX2+pipeWidth)/speed)
)));

Sprite pipeBar3 = NodeReader.create().readSprite("layouts/pipeBarrier.cce");
pipeBar3.setPositionX(startX3);
//  pipeBar2.setTag(Constant.TAG_PIPE_2);
pipeBar3.runAction(RepeatForever.create(Sequence.create(
MoveTo.create((startX3+pipeWidth)/speed,new Vec2(-pipeWidth,0)),
MoveTo.create(0, new Vec2(startX3, 0))
//所有pipe消失,不用等待

)));

owner.addChild(pipeBar1);
owner.addChild(pipeBar2);
owner.addChild(pipeBar3);
}
3.用onUpdate()这个方法最好用了,之前不知道,搞了N久。简单易行,效果如下:

5.点击事件的实现

6.碰撞检测



7.计分功能

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: