一、创建文件~

BulletLayer.h

BulletLayer.cpp

二、How to do?

(1)实例化BulletLayer方法的实现~

Bullet(PlayerLayer*temp);~Bullet();static Bullet* create(PlayerLayer *temp);

大家发现这个bullet类的实例化方法很奇怪~,那是由于小白前面制作PlayerLayer的时候没有把他做成全局变量,所以bulletLayer就访问不到的说~,但是我们必须得到飞机的位置,要不子弹从哪里打出来~~,所以小白我简单粗暴,直接把PlayerLayer传进BulletLayer,但实际上可以用友元的方法进行实现,但是……请原谅小编的C++ premier英文版~ 只看了150多页~,以前看的c++教程有点水,所以。。。反正是个小游戏,先暂时实现吧,后来再来翻工~~~~

Bullet* Bullet::create(PlayerLayer *temp)

{

Bullet*pRet = newBullet(temp); //创建一个对象if (pRet && pRet->init()) //内存申请到,初始化正确,那么就返回对象

{

pRet->autorelease();returnpRet;

}else{

delete pRet;

pRet=NULL; //否则就删掉~returnNULL;

}

}

Bullet::Bullet(PlayerLayer*temp) //把playerLayer保存~

{

_player=temp;

}

Bullet::~Bullet()

{

}

(2)初始化子弹的方法

这里采用的是跟初始化敌机一模一样的方法~所以呢~我们就……

voidBullet::initBullet()

{for (int i = 0; i < BULLET_NUM; i++) //BUllET_NUM就是定义要初始化几个子弹的宏~

{

Sprite* bullet = Sprite::createWithSpriteFrameName("bullet1.png");

bullet->setVisible(false);this->addChild(bullet);

_bulletsArray.pushBack(bullet);

}

}

(3)发射子弹的方法~

同样是跟发射敌机的方法是一样的,首先就是先得到空闲的子弹~

Sprite*Bullet::getAvailableBulletSprite()

{for (auto&sp : _bulletsArray)

{if (!sp->isVisible())

{returnsp;

}

}returnnullptr;

}

然后就是发射子弹的方法~

void Bullet::spawBullet(floatdt)

{

Vec2 playerPosition= _player->getPlayerPlanePositon(); //这里就是得到玩家飞机的锚点位置。

//大家会发现前面没有实现这个方法~~在这里贴一下

Vec2 PlayerLayer::getPlayerPlanePositon()

{return _playerplane->getPosition();

}

Size PlayerLayer::getPlayerPlaneContentSize()

{return _playerplane->getContentSize();

}

auto bulletPosition= Vec2(playerPosition.x, playerPosition.y + _player->getPlayerPlaneContentSize().height / 2);

Sprite* bullet =getAvailableBulletSprite();//得到空闲的子弹~

Size screenSize= Director::getInstance()->getVisibleSize();if(bullet)

{

bullet->setVisible(true);

bullet->setPosition(bulletPosition);float moveOffset = screenSize.height + bullet->getContentSize().height / 2 -playerPosition.y;

auto moveBy= MoveBy::create(moveOffset / VELOCITY_OF_BULLET, Vec2(0, moveOffset));

auto toggleVisibility=Hide::create();

auto action=Sequence::createWithTwoActions(moveBy, toggleVisibility);

bullet->runAction(action);}

//同样跟敌机一样,就是飞出屏幕的时候设置为消失~

}

(4)Init()中调用,并且加入到GameScene中就可以啦。

this->initBullet();this->schedule(schedule_selector(Bullet::spawBullet), 1.0 / 5);

三、效果图展示~

cocos2dx掼蛋_cocos2dx游戏开发——微信打飞机学习笔记(九)——BulletLayer的搭建...相关推荐

  1. cocos2dx掼蛋_cocos2dx游戏开发——微信打飞机学习笔记(二)——游戏框架

    一.游戏的基本框架: WelcomeScene    -->    GameScene   -->   GameOverScene ||                           ...

  2. cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建

    一.场景与层的关系: cocos2dx的框架可以说主要由导演,场景,层,精灵来构成: 1.其中导演,意如其名,就是操控整个游戏的一个单例,管理着整个游戏. 2.场景就像电影的一幕剧情,所以说,懂得如何 ...

  3. cocos2dx游戏开发——微信打飞机学习笔记(七)——Enemy的搭建

    一.文件创建~ Enemy.h Enemy.cpp 二.How to do? 由于我是已经完成成个游戏的功能,所以我会将游戏中enemy所需要的很多功能基本上都先考虑到了,如果大家自己在做的时候也许没 ...

  4. cocos2dx掼蛋_cocos2dx游戏开发——别踩白块学习笔记(一)——Block类

    一.Block类介绍 当然啦,Block类在这个游戏里就是必需品= =,因为整体都是由这个搞出来的,所以我们可以把游戏需要实现的功能都放在这里. 主要有下面这些功能(经典模式): 1.创建一个Bloc ...

  5. cocos2dx游戏开发——微信打飞机学习笔记(五)——BackgroundLayer的搭建

    一.创建文件~ 文件名:BackgroundLayer.h BackgroundLayer.cpp 架构就跟前面的一样,我就直接进入正题 啦,而且github有完整代码,欢迎下载~ 二.创建滚动的背景 ...

  6. 《LUA游戏开发实践指南》学习笔记1

    本文只做个人学习笔记! Lua脚本语言的优点:免费.小巧.快速和易移植. 游戏项目中的Lua,可以完成以下工作 编辑游戏用户界面(玩家和你的游戏进行交互的媒介) 定义.存储和管理游戏数据(Lua本人并 ...

  7. cocos2dx掼蛋_Cocos2dx 入门小游戏实例

    从图书馆借了本木头的书籍,以下实例来自书籍,写在这里仅作笔记.. 游戏内容大概如下: 1.一个Sprite在地图上一直在跑,Sprite可以跳跃(其实是地图不断向左滚动) 2.途中有金币,Sprite ...

  8. cocos2dx掼蛋_cocos2dx入门

    几个重要概念 在cocos2d引擎中,有几个概念,分别是导演,场景,布景和人物角色. 导演(CCDirector)在cocos2d-x引擎中,导演类是游戏的组织者和领导者,导演制定规则让游戏内的场景, ...

  9. cocos2dx掼蛋_Cocos2d-x中文版

    功能介绍 流程控制(Flow control):非常容易地管理不同场景(scenes)之间的流程控制 精灵(Sprites):快速而方便的精灵 动作(Actions):告诉精灵们该做什么.可组合的动作 ...

最新文章

  1. windows使用Win32DiskImager安装树莓派系统
  2. cesium js 路径_Cesium开发学习路径
  3. 一个数独问题的算法(已更新,提供一个简单算法,欢迎拍砖)
  4. Keepalived时主备负载均衡器都有VIP的问题:VRRP协议问题
  5. python中arcsec_python – 更好的方法来计算Skyfield中两个物体的明显角度分离?
  6. manjaro设置字体_Manjaro安装配置美化字体模糊发虚解决记录
  7. html开网站弹窗代码大全,JS弹出窗口代码大全(详细整理)
  8. 全国各地电信DNS服务器地址:
  9. Android USB电源管理
  10. wifi密码破解案列
  11. 帝国CMS系统自动生成sitemap.xml网站地图的教程
  12. IPA 包不经过APP Store直接发布到网站供用户下载安装
  13. 安装下载的python软件包——以Community Water Model (CWatM v1.04)为例
  14. GIMP的安装和使用
  15. 管理类综合-论证有效性分析思路总结
  16. rabbitmq安装 虚拟ip_步骤4:配置IPv6地址
  17. 2019年数学建模A题 高压油管的压力控制
  18. 王家林老师人工智能AI 第26课:使用Apriori对美食店的消费者进行美食推荐 老师微信13928463918
  19. python云计算主要是干嘛的_全球python 云计算是干什么的
  20. springboot windows下WORD文档转PDF

热门文章

  1. Android开发——APP ANR治理
  2. linux cp cannot stat,cp 复制文件夹 文件 cp: cannot stat ` No such file or directory...
  3. 王者传奇手游怎么在电脑上玩 王者传奇电脑版玩法攻略
  4. android刺激战场不卡机型,吃鸡用什么手机 8 款适合玩《绝地求生:刺激战场》手机推荐...
  5. 与时间赛跑——2019上半年总结
  6. 电商4.0项目【三】: 用户模块(8081)
  7. 【财经期刊FM-Radio|2020年10月27日】
  8. java怎样输入五个数字打一成语,Java的线程安全四种方式五个等级[1]
  9. 【学习笔记asp.net】WebService创建、发布及在IIS上部署
  10. 开源游戏引擎Godot3.2重大更新,支持更华丽的动态富文本特效