9.7总结

今天是做飞机游戏的第三天,实现了飞机的点击移动事件,以及子弹和飞机坐标的绑定。

飞机点击移动事件只是API 的引用。在子弹和飞机坐标绑定这一块比较重要。关键是要把飞机移动时的坐标传给子弹,让子弹始终拥有飞机的坐标

从而实现飞机发射子弹的视觉效果。程序中最重要的是有一个节点来接飞机坐标的数据,一共需要操作5个地方,子弹,h,子弹.cpp,飞机.h,飞机.cpp

GameScene.cpp。

1.飞机.h

在类中声明

static Hero* getInstance();    静态创建成员函数
static Hero* plane;          静态创建成员变量  
Node* getPlane(); 创建节点
Sprite* sp;创建精灵对象

 

2.飞机.cpp


Hero* Hero::plane = NULL;

Hero* Hero::getInstance(){
 if (plane == NULL){
  plane = new Hero();
 }
 return plane;
}

Node* Hero::getPlane(){
 return sp;
}

Node* Hero::getPlane(){
 return sp;
}
Node* Hero::getPlane(){
 return sp;
}
Node* Hero::getPlane(){
 return sp;
}
Node* Hero::getPlane(){
 return sp;
}

 

3子弹.h

在类中声明构造函数,其参数为(Hero *p)

私有private:

Hello *plane =NULL;

 

4子弹.cpp

定义构造函数

Bult::Bult(Hero *p){
 this->plane = p; //     将传入的数据给plane
visibleSize = Director::getInstance()->getVisibleSize();//获场景大小
 this->schedule(CC_SCHEDULE_SELECTOR(Bult::update), 0.5f);
 this->scheduleUpdate();
}

在最后用MoveTo生成子弹坐标的时候


  auto move = MoveTo::create(1, Vec2(this->plane->getPlane()/*sp*/->getPositionX(), visibleSize.height + this->plane->getPlane()->getPositionY() + 100));
(this->plane->getPlane()取得的数据就是sp,即飞机的移动坐标。

 

5.GameScene.cpp
Hero *p = Hero::getInstance();      
p->init()
Bult* p1=new Bult(p);
单例模式,一次创建以后可以一直使用再别的地方也可以使用,相当于全局变量

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值