基于COCOS2D-X的lua版打怪减血特效

打怪减血特效是游戏最常见的一种,我看了http://www.cnblogs.com/zisou/p/cocos2d-x-demo1.html的BOLG,也写了个LUA版。

 function createbleed( num )

    local ori_bleed_png = CCTextureCache:sharedTextureCache():addImage("bleed.png");--内容为-0123456789
    local X = ori_bleed_png:getContentSize().width;--得到图的总宽
    local Y = ori_bleed_png:getContentSize().height;
    local x = X/11;

    local stack ={} ;--哈哈 这里像数组一样用它 
    local len = 0;--num的位数啦
while true do
        if num < 1  then--当num=0时 各位数都存在stack了
            break;
      end
        local i = num%10;
        num = (num-i) / 10;--它奶奶的 lua /这个运算不像c++ 159/10=15.9
        len = len + 1;
        stack[len] = i;    
    end

    local rect  = CCRectMake(0,0,x,Y);
    local frame0 = CCSpriteFrame:createWithTexture(ori_bleed_png,rect);--得到第一个符号
    local shownum = CCSprite:createWithSpriteFrame(frame0)--应该是到这里才变成精灵
    shownum:setPosition(115,115)
   for  j=1,len do
         i = stack[j];
         rect = CCRectMake(x*(1+i),0,x,Y);
         frame0 = CCSpriteFrame:createWithTexture(ori_bleed_png,rect);
         local lonenum = CCSprite:createWithSpriteFrame(frame0);
         lonenum:setPosition(shownum:getContentSize().width*(len-j+1),shownum:getContentSize().height*0.5);--这里要注意了  你add在谁哪里这个位置就是相对谁的(0,0)
         lonenum:setTag(1000+j);--一般的动作会跟着父结点除了淡出 下面for用到
         shownum:addChild(lonenum,j);--把新的数字加到原图
     end

    local action1 = CCFadeIn:create(1)
    local action2 = CCFadeOut:create(2)--下面的for循环不能省这句,否则只是最后一次循环有响应此动作 一个动作只能用一次?!
    local actionBy = CCMoveBy:create(2, ccp(0, 50))
    shownum:runAction(CCSequence:createWithTwoActions(action1,actionBy))--子结点也可以移动
    shownum:runAction(action2)
     for i=1,len do 
      action2 = CCFadeOut:create(2)--这里不能省的 折腾我好久
      shownum:getChildByTag(1000+i):runAction(action2)--所有结点都淡出
     end
  
 return shownum;

end
哈哈 直接在hellolua代码里调用 就是

    local bgMusicPath = CCFileUtils:sharedFileUtils():fullPathForFilename("background.mp3")
    SimpleAudioEngine:sharedEngine():playBackgroundMusic(bgMusicPath, true)
    local effectPath = CCFileUtils:sharedFileUtils():fullPathForFilename("effect1.wav")
    SimpleAudioEngine:sharedEngine():preloadEffect(effectPath)

    -- run
    local sceneGame = CCScene:create()
    sceneGame:addChild(createLayerFarm())
    sceneGame:addChild(createLayerMenu())
    sceneGame:addChild(createbleed(15948615670))--这一句才是调用特效的
    CCDirector:sharedDirector():runWithScene(sceneGame)

简单地贴个效果图吧

咦这里所见非所得 图不见了




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值