|
1 |
| -# 游戏扬帆班任务二 - 打飞机游戏 |
| 1 | +#游戏扬帆班任务二「打飞机」 |
2 | 2 |
|
3 | 3 | ## 任务描述
|
4 | 4 |
|
5 |
| -实现一个在移动端玩的飞机战斗游戏,通过手机左右倾斜来控制飞机的水平位置移动,击打对面的敌机,并躲避敌人的子弹 |
| 5 | +实现一个移动端游戏,玩家通过手机左右倾斜来控制飞机的水平移动,射击不断出现的敌机,并躲避敌机的冲击。 |
6 | 6 |
|
7 |
| -[点击查看示例](http://www.4399.com/flash/122374.htm) |
| 7 | + |
8 | 8 |
|
9 |
| -示例仅做参考,可按照自己想法任意设计界面及玩法 |
| 9 | +## 任务步骤 |
10 | 10 |
|
11 |
| -## 任务要求 |
| 11 | +### 1. 技术选型 |
12 | 12 |
|
13 |
| -* 通过手机左右倾斜来控制飞机的水平位置移动 |
14 |
| -* 飞机爆炸有一定的爆炸效果 |
15 |
| -* 敌机至少有两种 |
| 13 | +参见:[技术选型说明](https://github.com/baidu-ife/ife/blob/master/2015_summer/task/game_yangfan_01.md#1-技术选型) |
| 14 | + |
| 15 | +### 2. 游戏状态设计 |
| 16 | + |
| 17 | +本游戏包含四个基本状态: |
| 18 | + |
| 19 | +- 欢迎状态:包含欢迎信息、开始游戏按钮、选项设置等; |
| 20 | +- 关卡状态:包含游戏的主体元素与核心玩法; |
| 21 | +- 暂停状态:通过关卡状态的暂停按钮触发,包含回到游戏按钮、重新开始按钮; |
| 22 | +- 结束状态:游戏关卡结束时触发,包含该局分数、最高记录、重新开始等元素; |
| 23 | + |
| 24 | +### 3. 背景 |
| 25 | + |
| 26 | +- 利用「首尾相接」技巧,让一定高度的背景图片做反向循环滚动,造成主角向前行驶的视觉差; |
| 27 | +- 可以在背景的基础上添加更多的图片层,以不同的速度滚动,形成远近层次的效果; |
| 28 | + |
| 29 | +### 4. 主角 |
| 30 | + |
| 31 | +本游戏主角即为我方飞机,它在飞行时会以帧动画的形式显示,例如下图的两帧构成飞机喷气的效果: |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +可以增加更多帧使动画更加细腻流畅。 |
| 37 | + |
| 38 | +### 5. 子弹 |
| 39 | + |
| 40 | +- 初始位置:以所属飞机位置为基准; |
| 41 | +- 飞行效果:一旦发射,垂直方向移动,水平方向不变; |
| 42 | +- 回收机制:对于频繁创建和销毁的对象,可利用[对象池](https://zh.wikipedia.org/wiki/%E5%AF%B9%E8%B1%A1%E6%B1%A0%E6%A8%A1%E5%BC%8F)进行内存优化。 |
| 43 | + |
| 44 | +### 6. 操控 |
| 45 | + |
| 46 | +通过手机左右倾斜控制主角水平移动: |
| 47 | + |
| 48 | +- 利用 HTML5 提供的重力感应特性实现; |
| 49 | +- 可以考虑倾斜速率对主角移动速度的影响; |
| 50 | +- 尽量适配移动端多设备多浏览器; |
| 51 | +- 开发时可以使用 Chrome 的传感器模拟功能进行调试; |
| 52 | + |
| 53 | +参考资料: |
| 54 | + |
| 55 | +- [检测设备方向](https://developer.mozilla.org/zh-CN/docs/Web/API/Detecting_device_orientation) |
| 56 | +- [使用 HTML5 设备方向检测特性开发的重力小游戏](http://www.gbtags.com/gb/share/4247.htm) |
| 57 | + |
| 58 | +### 7. 敌机 |
| 59 | + |
| 60 | +- 至少有两种类型的敌机,各类型之间在贴图、生命值、移动速度、出现频率、击落奖励等方面有所不同; |
| 61 | +- 随机初始位置和出现时间; |
| 62 | +- 数量随分数增加而增加,或设置阶段性阈值; |
| 63 | +- 选用合理的回收机制。 |
| 64 | + |
| 65 | + |
| 66 | +### 8. 碰撞检测 |
| 67 | + |
| 68 | +- 检测一:子弹与敌机的碰撞; |
| 69 | +- 检测二:敌机与主角的碰撞; |
| 70 | +- 主角、敌机的爆炸效果(帧动画或粒子效果)。 |
| 71 | + |
| 72 | +### 9. 暂停与屏蔽 |
| 73 | + |
| 74 | +暂停按钮触发暂停状态: |
| 75 | + |
| 76 | +- 屏蔽重力感应,屏蔽关卡状态的可点击元素; |
| 77 | +- 暂停主角、敌机、子弹的飞行,暂停背景滚动,暂停帧动画。 |
| 78 | + |
| 79 | +### 10. 收尾 |
| 80 | + |
| 81 | +- 关卡状态的其它界面元素,如记分板; |
| 82 | +- 其余游戏状态,即欢迎状态和结束状态,以及对应的转场逻辑。 |
| 83 | + |
| 84 | +### 11. 扩展 |
| 85 | + |
| 86 | +想一想,怎样扩展可以使游戏更有趣呢? |
| 87 | + |
| 88 | +比如: |
| 89 | + |
| 90 | +- 天降各种类型的道具,如改变子弹类型的、全屏攻击的、短时间内无敌的,等等; |
| 91 | +- 敌机也会发射子弹(考虑到操控的特殊性,应注意适当调试参数以控制游戏难度); |
| 92 | +- BOSS 战,引入人工智能; |
| 93 | +- 子弹非自动发射,而是通过特定的操作; |
| 94 | +- 音效/音乐; |
| 95 | +- …… |
16 | 96 |
|
17 | 97 | ## 任务时间
|
18 | 98 |
|
19 | 99 | 7月27日 至 8月14日
|
20 | 100 |
|
21 |
| -## 学习资料 |
22 |
| - |
23 |
| -* [春季班学习资料](https://github.com/baidu-ife/ife/tree/master/2015_spring/task/task0001) |
24 |
| -* [春季班学习资料](https://github.com/baidu-ife/ife/tree/master/2015_spring/task/task0002) |
|
0 commit comments