• cocos2d-x(十一)Lua开发飞机大战-6-加入子弹



    接下来我们为飞机加入子弹,首先创建一个BulletLayer:

    module("BulletLayer",package.seeall) 
    
    local bulletBatchNode = nil
    local plane = nil
    local bulletArray = {}
    local bulletLayer = nil
    
    function create()
    	bulletLayer = CCLayer:create()
    	bulletBatchNode = CCSpriteBatchNode:create("Images/shoot.png")
    	bulletLayer:addChild(bulletBatchNode);
    	return bulletLayer
    end

    先解释一下定义的那几个变量吧。

    bulletBatchNode 是用来管理子弹精灵的。对于CCSpriteBatchNode不太熟悉。请自己去查查资料。

    plane是指我们的主角,在设置子弹位置的时候须要飞机的大小。

    bulletArray是用来存放子弹的一个table,在做实体碰撞的时候会用上。

    如今来创建一个子弹吧

    function addBullet()
    	local planeX = plane:getPositionX()
    	local planeY = plane:getPositionY()
    	local bullet = CCSprite:createWithSpriteFrameName("bullet1.png")
    	local bulletPostion = ccp(planeX,planeY + plane:getContentSize().height / 2)
    	bullet:setPosition(bulletPostion)
    	bulletBatchNode:addChild(bullet)
    	
    	local length = visibleSize.height + bullet:getContentSize().height / 2 - bulletPostion.y;
    	local velocity = 250 --飞行速度
    	local moveTime = length/velocity
    	local actionMove = CCMoveTo:create(moveTime,ccp(bulletPostion.x,visibleSize.height  + bullet:getContentSize().height / 2))
    	
    	local actionDone = CCCallFuncN:create(removeBullet)
    	local sequence = CCSequence:createWithTwoActions(actionMove,actionDone)
    	bullet:runAction(sequence)
    	table.insert(bulletArray,bullet)
    end

     子弹有了。图层有了,怎样会将子弹不断的加入到图层上呢?当然是用scheduler。

    local addBulletEntry = nil
    function stratOneShoot()
    	if addDoulbeBulletEntry ~= nil then
    		stopDoubleShoot()
    	end
    	addBulletEntry = CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(addBullet, 0.2,false)
    end


    有了開始射击,自然应该有停止射击

    function stopOneShoot()
    	if addBulletEntry ~= nil then
    		CCDirector:sharedDirector():getScheduler():unscheduleScriptEntry(addBulletEntry)
    		addBulletEntry = nil
    	end
    end

    好了。如今是不是看见子弹满天飞了。 


     

  • 相关阅读:
    Java-Scanner
    Java-Stream File IO
    Java-方法
    Java-日期 正则表达式
    Java-数组
    Java-Character String StringBuffer StringBuilder
    Bootstrap栅格系统
    canvas-nest.js 设置网页背景
    Oracle数据库与MySQL的不同点
    java oop第15章_Socket网络编程
  • 原文地址:https://www.cnblogs.com/mqxnongmin/p/10706452.html
Copyright © 2020-2023  润新知