微信打飞机项目小结-管理子弹和敌人类

微信打飞机项目小结-管理子弹和敌人类

首页枪战射击控制子弹飞更新时间:2024-06-01

Manager类

1.定义为一个单例

创建了这个Manager的实例之后,Manager类不会释放这块申请的内存,而是由系统来回收!

//子弹和敌机管理器,做成单例 class Manager { public: static Manager * getInstance(); static void freeInstance(void); private: static Manager * m_manager; Manager(); bool init(); public: //使用以下的方法定义了俩个容器,并且实现了get方法,一定要注意get的返回值,这个返回的是引用 Vector<EnemyBase *> & getEnemyVector(){return m_enemyVector;}; Vector<Bullet *> & getBulletVector(){return m_bulletVector;}; private: Vector<EnemyBase *> m_enemyVector; Vector<Bullet *> m_bulletVector; };

注意这里的定义的两个get方法,返回的是vector的引用,引用vector不会拷贝vector里的内容。

2.使用vector的时候,注意get方法赋值的时候不加& 表示会复制一份vector数据给这个变量。

//从管理器中获得子弹和敌机的数组引用 auto & enemyVector = Manager::getInstance()->getEnemyVector(); auto & bulletVector = Manager::getInstance()->getBulletVector();

3. 控制飞机子弹,调用schedule和unschedule函数,注意c 里循环是-1,但是,js里循环是用的一个常量定义cc.REPEAT_FOREVER。

//发射双发子弹,持续时间是4s this->schedule(SEL_SCHEDULE(&MainGame::addBulletByUFO),0.1f,40,0); //停止单发子弹的发射 this->unschedule(SEL_SCHEDULE(&MainGame::addBullet)); //4s后再发射单发子弹 this->schedule(SEL_SCHEDULE(&MainGame::addBullet),0.1f,-1,4.0f); //如果碰撞检测到了,则设置这个UFO为不可见,因为移除的工作会在UFO执行完动作以后进行

————————————————

版权声明:本文为CSDN博主「sylalak123」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/yejinxiong001/article/details/95462411

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved