# 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飞机大战游戏 image-20230421161857982 image-20230423213546374 image-20230423222135038 image-20230423213726327 **游戏介绍**: - 玩家拖动控制飞机,通过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 # 随机函数工具,封装生成某个区间随机数 ``` # 类结构 **类结构图**: ![image-20230424192113225](README.assets/image-20230424192113225.png) - `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