- void MainScene::collisionDetection()
- {
- //遍历所有非空闲的敌机
- for(int i = 0 ;i < ENEMY_NUM;i++)
- {
- if(m_enemys[i].m_Free)
- {
- //空闲飞机 跳转下一次循环
- continue;
- }
- //遍历所有 非空闲的子弹
- for(int j = 0 ; j < BULLET_NUM;j++)
- {
- if(m_hero.m_bullets[j].m_Free)
- {
- //空闲子弹 跳转下一次循环
- continue;
- }
- //如果子弹矩形框和敌机矩形框相交,发生碰撞,同时变为空闲状态即可
- if(m_enemys[i].m_Rect.intersects(m_hero.m_bullets[j].m_Rect))
- {
- m_enemys[i].m_Free = true;
- m_hero.m_bullets[j].m_Free = true;
- }
- }
- }
- }
10.2 调用并测试函数
在.cpp中 成员函数里,追加碰撞检测代码
文章插图
运行查看效果,子弹和敌机碰撞后会同时消失
11 爆炸效果
爆炸效果功能实现步骤如下:
11.1 创建爆炸文件和类
创建Bomb类以及生成对应的文件
创建好后生成bomb.h 和 bomb.cpp两个文件
文章插图
11.2 爆炸成员函数和成员属性
在.h中加入爆炸配置数据
- #define BOMB_PATH":/res/bomb-%1.png"//爆炸资源图片
- #define BOMB_NUM20//爆炸数量
- #define BOMB_MAX7//爆炸图片最大索引
- #define BOMB_INTERVAL 20//爆炸切图时间间隔
在bomb.h中添加如下代码:
- #ifndef BOMB_H
- #define BOMB_H
- #include "config.h"
- #include
- #include
- class Bomb
- {
- public:
- Bomb();
- //更新信息(播放图片下标、播放间隔)
- void updateInfo();
- public:
- //放爆炸资源数组
- QVector
m_pixArr; - //爆炸位置
- int m_X;
- int m_Y;
- //爆炸状态
- bool m_Free;
- //爆炸切图的时间间隔
- int m_Recoder;
- //爆炸时加载的图片下标
- int m_index;
- };
- #endif // BOMB_H
11.3 实现成员函数
- Bomb::Bomb()
- {
- //初始化爆炸图片数组
- for(int i = 1 ;i <= BOMB_MAX ;i++)
- {
- //字符串拼接,类似":/res/bomb-1.png"
- QString str = QString(BOMB_PATH).arg(i);
- m_pixArr.push_back(QPixmap(str));
- }
- //初始化坐标
- m_X = 0;
- m_Y = 0;
- //初始化空闲状态
- m_Free = true;
- //当前播放图片下标
- m_index = 0;
- //爆炸间隔记录
- m_Recoder = 0;
- }
- void Bomb::updateInfo()
- {
- //空闲状态
- if(m_Free)
- {
- return;
- }
- m_Recoder++;
- if(m_Recoder < BOMB_INTERVAL)
- {
- //记录爆炸间隔未到,直接return,不需要切图
- return;
- }
- //重置记录
- m_Recoder = 0;
- //切换爆炸播放图片
- m_index++;
- //注:数组中的下标从0开始,最大是6
- //如果计算的下标大于6,重置为0
- if(m_index > BOMB_MAX-1)
- {
- m_index = 0;
- m_Free = true;
- }
- }
11.4 加入爆炸数组
在.h中加入爆炸数组 成员属性
- 山本五十六之死:中国人破译密电美国军机截杀
- 成吉思汗陵墓五大谜团大宝藏究竟在哪儿
- Windows远程桌面实现之五(FFMPEG实现桌面屏幕RTSP
- 一加五,一加5怎么oo
- 五阿哥永琪死得太早如果继位能斗过和珅吗
- 解密帝王为何被称之为九五之尊
- 盘点:曹军战亡五大虎将排名
- psp罪恶都市秘籍召唤飞机 psp罪恶都市秘籍
- 一五阳性可以转阴吗,乙肝一五阳性可以转阴真的吗?乙肝科
- 五代时期诗人黄损生平简介黄损代表作品