[cocos2d-x][游戏开发]通过cocos2d-x实现简易飞机大战 06.游戏界面 主角飞机产生子弹

飞机产生的子弹其实可以看成一个子弹的图在飞机上的坐标产生,之后向上移动,到出屏幕之后在消失掉,弹幕就是每个一定的时间就自动产生一个子弹,子弹自己y中方向移动。

class Butter:public Node
{
public:
    CREATE_FUNC(Butter);
 
    bool init();
    int px,py;
    int type;
    int level;
      Sprite *sp;
       static Butter * newButter(int type,int level,int x,int y);
    void moveTo(int x, int y);
    
};

bool Butter::init()
{
    if (!Node::init()) {
        return  false;
    }
    this->sp=nullptr;
    return true;
}
Butter * Butter::newButter(int type,int level,int x,int y)
{
    Butter *newButter=Butter::create();
  
    switch (type) {
        case 1:
            newButter->sp=Sprite::create("img_cloud_1.png");
            break;
        case 2:
             newButter->sp=Sprite::create("img_bullet1.png");
            break;
        case 3:
             newButter->sp=Sprite::create("img_bullet2.png");
            break;
        }
    newButter->addChild(newButter->sp);
    newButter->moveTo(x, y);
    return newButter;
}
void Butter::moveTo(int x, int y)
{
    this->sp->setPosition(Vec2(x,y));
    this->px=x;
    this->py=y;
}

 this->schedule(schedule_selector(Game::newButter),1);
    this->schedule(schedule_selector(Game::movButter),0.5);

void Game::newButter(float t)
{
    auto plane=(Plane *)this->getChildByTag(110);
    Butter *nb=Butter::newButter(3, 0, plane->px, plane->py);
    allButter.pushBack(nb);
    this->addChild(nb);
}
void Game::movButter(float t)
{
    for (int i=0; i<allButter.size(); i++) {
        Butter * nowB=allButter.at(i);
        nowB->moveTo(nowB->px, nowB->py+100);
        if (nowB->py>Director::getInstance()->getWinSize().height) {
            allButter.erase(i);
            this->removeChild(nowB);
            i--;
        }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值