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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值