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

来源:互联网 发布:家庭电子记账软件 编辑:程序博客网 时间:2024/05/21 10:44

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.计分功能

0 0