cocos2d-x3.0打飞机发子弹
来源:互联网 发布:mac java 安装 编辑:程序博客网 时间:2024/04/29 17:22
如有雷同,我是抄袭 偶尔e网事 童鞋的。
其实我就是讨厌cocos2d-x滥用单例类,作用划分的不清晰。。。。。
在GameLayer里加入planeLayer和BulletLayer。同时因为BulletLayer里子弹的初始位置在飞机sprite的头部,所以需要持有sprite,所以要把planeLayer的实例传给BulletLayer。
因此BulletLayer是酱紫:
class BulletLayer : public Layer{public:BulletLayer(PlaneLayer* apGameLayer);~BulletLayer();void AddBullet(float dt);void StartShoot(float dt);void MoveFinished(Node* pSender);private:SpriteBatchNode* m_pBulletBatchNode;CCArray* m_pAllBulletArray;PlaneLayer* m_pPlaneLayer;};#include "BulletLayer.h"#include "GameLayer.h"#include <functional>BulletLayer::BulletLayer(PlaneLayer* apGameLayer): m_pPlaneLayer(apGameLayer){bool res = cocos2d::Layer::init();Texture2D* lpTexTure = TextureCache::sharedTextureCache()->addImage("shoot.png");m_pBulletBatchNode = SpriteBatchNode::createWithTexture(lpTexTure);addChild(m_pBulletBatchNode);m_pAllBulletArray = Array::create();}void BulletLayer::AddBullet( float dt ){Sprite* bullet = Sprite::createWithSpriteFrameName("bullet1.png");m_pBulletBatchNode->addChild(bullet);Point planePoint = m_pPlaneLayer->getChildByTag(1)->getPosition();Size planeSize = m_pPlaneLayer->getChildByTag(1)->getContentSize();const Point bulletPos = ccp(planePoint.x, planePoint.y+planeSize.height/2); bullet->setPosition(bulletPos);float length = CCDirector::sharedDirector()->getWinSize().height + planeSize.height/2-bulletPos.y;float velocity = 420/1;float realMoveDuration = length/velocity;FiniteTimeAction* actionMove = MoveTo::create(realMoveDuration,ccp(bulletPos.x,CCDirector::sharedDirector()->getWinSize().height + planeSize.height/2));FiniteTimeAction* actionDone = CCCallFuncN::create(this,callfuncN_selector(BulletLayer::MoveFinished));Sequence* sequence = Sequence::createWithTwoActions(actionMove,actionDone);bullet->runAction(sequence);}void BulletLayer::StartShoot( float dt ){schedule(schedule_selector(BulletLayer::AddBullet),0.2f, kRepeatForever,dt);}void BulletLayer::MoveFinished(Node* pSender){Sprite* bullet = static_cast<Sprite*>(pSender);m_pBulletBatchNode->removeChild(bullet, true);bullet->release();}BulletLayer::~BulletLayer(){}
这里一点经验,如果有互相包含的话,一定要用前置声明,这里我偷懒了,不过编译没问题。好吧,大家要看源码,去下载吧。
http://pan.baidu.com/share/link?shareid=4044277731&uk=153311302
- cocos2d-x3.0打飞机发子弹
- [cocos2d-x] 打飞机子弹敌机碰撞检测
- cocos2d-x3.0打飞机学习之纠正上一篇的一个问题
- python打飞机躲子弹
- quick-cocos2d-x 飞机大战(打飞机)小demo教程------子弹类
- python-小游戏(打飞机)v1.2(三发子弹)
- Cocos2d-x简单游戏<打飞机>代码实现|第二部分:子弹类
- Cocos2d-x 3.1.1 学习日志5--cocos2d-x3.1.1打飞机的实现
- 【一】仿微信飞机大战cocos2d-x3.0rc1
- 【二】仿微信飞机大战cocos2d-x3.0rc1
- 【三】仿微信飞机大战cocos2d-x3.0rc1
- cocos2d-x 3.2 |飞机大战:飞机与子弹
- Android 打飞机小游戏 cocos2d
- 是打飞机的撒旦发
- cocos2d-x(十一)Lua开发飞机大战-6-添加子弹
- unity3d开发 打飞机小游戏(三)(飞机子弹设置)
- Cocos2d-JS实现的打飞机
- 【cocos2d-x-3.2】【高仿微信打飞机系列一】【开始界面 子弹生成 背景滑动 主飞机】
- Android学习篇章62-ViewPager-滑动窗口-FragmentActivity
- 详解 finalize、final、finally
- 手工插入时候出现org.hibernate.exception.ConstraintViolationException: could not insert
- windows下VIM 惯用配置
- java中的 Set转List
- cocos2d-x3.0打飞机发子弹
- MYSQL常用命令
- 求素数算法
- Dos批处理中符号作用大全
- 四件在我步入职业软件开发生涯那天起就该知道的事情
- Android学习篇章63-FragmentActivity
- 《java未眠夜》书摘
- Linux 0.11内核编译和bochs上的实验环境的搭建
- [C#] 利用ASP.net和Console專案實作iOS的訊息推播