9.7总结
2016-09-07 19:36
120 查看
今天是做飞机游戏的第三天,实现了飞机的点击移动事件,以及子弹和飞机坐标的绑定。
飞机点击移动事件只是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);
单例模式,一次创建以后可以一直使用再别的地方也可以使用,相当于全局变量
飞机点击移动事件只是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);
单例模式,一次创建以后可以一直使用再别的地方也可以使用,相当于全局变量
相关文章推荐
- 我是运营,我没有假期
- 每个 Linux 游戏玩家都绝不想要的恼人体验
- 在 Fedora 上使用 Steam play 和 Proton 来玩 Windows 游戏
- Steam 让我们在 Linux 上玩 Windows 的游戏更加容易
- 如何使用 Steam Play 在 Linux 上玩仅限 Windows 的游戏
- 新一代iPad适配应用之游戏篇
- VB实现的《QQ美女找茬游戏》作弊器实例
- C#实现洗牌游戏实例
- C#实现的算24点游戏算法实例分析
- 最常见的猜拳小游戏Android代码实现
- C#实现简单的井字游戏实例
- C++编写简单的打靶游戏
- C++实现基于控制台界面的吃豆子游戏
- 纯javascript实现的小游戏《Flappy Pig》实例
- 基于javascript实现句子翻牌网页版小游戏
- JavaScript实现俄罗斯方块游戏过程分析及源码分享
- javascript实现的猜数小游戏完整实例代码
- JS小游戏之仙剑翻牌源码详解
- JS小游戏之宇宙战机源码详解
- Android基本游戏循环实例分析