# cocos-airplane
**Repository Path**: li-luoqiang/cocos-airplane
## Basic Information
- **Project Name**: cocos-airplane
- **Description**: 基于Cocos Creator2.4+Typescript实现的2D飞机大战游戏
- **Primary Language**: TypeScript
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 7
- **Created**: 2024-05-15
- **Last Updated**: 2024-05-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 飞机大战
基于Cocos Creator 2.4.11、TypeScript实现的2D飞机大战游戏
**游戏介绍**:
- 玩家拖动控制飞机,通过Z弹击毁敌机
- 敌人随机出现,不同类型敌人有不同进攻方式
- 玩家被敌机击中或撞毁,即游戏结束
- 游戏为无尽模式,直到玩家被击毁
# 目录结构
```bash
assets/
|-- resources # 【资源:音频、图片、预制体】
| |-- audio # 音频
| |-- bg # 背景图
| |-- bullet # 子弹图
| |-- fightIcon
| |-- imgs # 飞机和UI图片
| `-- prefabs # 预制体
|-- scene # 【场景】
| `-- game.fire # 主场景
`-- script # 【脚本组件】
|-- Constant # 【枚举/常量】
| `-- Constant.ts
|-- Control # 【控制器】会被挂载到对应的预制体上
| |-- BackgroundControl.ts # 背景图 控制器
| |-- BulletControl.ts # 子弹 控制器
| |-- EnemyControl.ts # 敌机 控制器
| |-- PlayerControl.ts # 玩家 控制器
| `-- PropControl.ts # 道具 控制器
|-- Factory # 【工厂】用于创建各种对象
| |-- BulletByEnemyFactory.ts # 敌机Z弹工厂,创建敌机Z弹
| `-- EnemyFactory.ts # 敌机工厂,创建敌机
|-- Manager # 【管理器】
| |-- AudioManager.ts # 音频管理器
| |-- EnemyManager.ts # 敌机管理,管理敌机生成和集体销毁
| |-- GameManager.ts # 游戏管理,全局管理游戏流程
| |-- PlayerManager.ts # 玩家管理
| |-- PoolManager.ts # 对象池管理(通用对象池)
| `-- PropManager.ts # 道具管理,管理道具生成
|-- UI # 【UI相关】
| `-- UIMain.ts # UI管理
`-- Utils # 【工具类】
|-- AudioUtil.ts # 音频工具,动态加载音频资源
`-- Random.ts # 随机函数工具,封装生成某个区间随机数
```
# 类结构
**类结构图**:

- `GameManager`:负责把控整个游戏的抽象逻辑。如初始化游戏、控制敌机管理器、结束游戏、重新开始、响应UI界面回调
- `xManager`:控制对应的预制生成和销毁逻辑
- `xControl`:负责对应节点/预制的基本逻辑。
- `UIMain`:提供UI界面显示或隐藏接口
# 策划案
## 基本玩法
1. 玩家拖动控制飞机,击毁敌机即可**增加分数**
2. 玩家被敌机**击毁**或**撞毁**,即游戏失败
3. 游戏为**无尽模式**,直到玩家飞机被击毁
## 敌机
- 敌机会**随机位置**出现
- 敌机分有**小型、中型、大型3类**,不同类型的飞机会有不同的**击毁次数、飞行速度、攻击方式**、**出现时间**
| 类型 | 被击毁次数 | 飞行速度 | 攻击方式 | 出现时间 |
| :--: | :--------: | :------: | :-----------------: | :------: |
| 小型 | 1 | 快 | 无 | 5s后 |
| 中性 | 2 | 中等 | 出现时会发射1颗子弹 | 10s后 |
| 大型 | 3 | 慢 | 会一直发射子弹 | 20s后 |
## 敌机组合
- 每隔10s会**随机**出现不同的**飞机组合**,一共3种 不同的组合
- 不同的组合有不同的**飞机类型、排列方式、攻击手段**
| 编号 | 飞机类型 | 排列方式 | 攻击手段 | 出现时间 |
| :--: | :------: | :---------: | :------------: | :------: |
| 1 | 全小型 | V字排开 | 无 | 5s后 |
| 2 | 全中性 | 2行2列 | 会发射一颗子弹 | 15s后 |
| 3 | 全大型 | 2架一字排开 | 一直发射子弹 | 20s后 |
## 道具
- 游戏开始5s后每隔10s会**随机**出现**游戏道具**,玩家通过**触碰**道具切换玩家攻击效果
- 游戏道具分有**蓝Z弹、红Z弹、Dao弹**,不同Z弹有不同攻击效果
| 类型 | 效果 |
| :-----: | :----------------------------------------------------------: |
| 蓝色Z弹 | 飞机头部并行发射2颗Z弹(一次性同时发射2颗) |
| 红色Z弹 | 飞机头部、两侧机翼并行发射Z弹(一次性同时发射3颗) |
| Dao弹 | 全屏销毁敌机;玩家攻击方式会回归初始状态;使用Dao弹后,下次道具必定不会出现Dao弹 |
# 思路
[思路.md](./docs/思路.md)
# 参考/学习
https://www.bilibili.com/video/BV1HY411H7V5
https://www.bilibili.com/video/BV14i4y1o7YF