1
0
mirror of https://github.com/LearnOpenGL-CN/LearnOpenGL-CN.git synced 2025-08-23 04:35:28 +08:00
Files
LearnOpenGL-CN/docs/06 In Practice/2D-Game/01 Breakout.md
2016-07-06 01:42:55 +08:00

52 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Breakout
原文 | [Breakout](http://www.learnopengl.com/#!In-Practice/2D-Game/Breakout)
---|---
作者 | JoeyDeVries
翻译 | HHz(qq:1158332489)
校对 | 暂无
看完前面的教程之后我们已适当地了解了OpenGL的内部运作原理并且我们已经能够用这些知识绘制一些复杂的图像。然而我们还只能做出一些小Demo并未达到用OpenGL开发实际应用的水平。这一部分主要介绍了一个用OpenGL制作的很简单的2D小游戏。本部分教程将展现OpenGL在较大较复杂程序中的强大之处。
!!! Attention
注意本部分内容不一定引入新的OpenGL概念但会或多或少地向我们展示示如何将前面所学的概念应用到更大的程序中去。
由于我们要做到尽可能地简化我们将开发一个别人开发过的2D电脑游戏。简单介绍一下本节的主要内容本节将开发一个1976年运行在Atari2600上的经典2D游戏控制台程序。游戏要求玩家通过操控一个挡板反弹一个小球撞倒所有的砖块并且要让小球不超出挡板边界玩家消灭所有砖块即为完成了游戏。
![](http://www.learnopengl.com/img/in-practice/breakout/breakout2600.png)
游戏有以下要点:
- 一个由玩家操纵且只能左右不超出屏幕边界移动的小挡板
- 球在屏幕上运动,每一次碰撞会使球 在其触及的地方改变运动方向(这与屏幕范围,砖块和挡板有关)
- 当球运动到了屏幕下边界,玩家会丧失一点生命值
- 球碰到砖块,砖块即被消去
- 砖块被消完,玩家即获胜
- 通过球打在挡板上的位置(距离挡板中心的距离),球的后续方向能够被玩家操控
因为小球不时可能会遇上砖块之间的缝隙所以它会继续弹开周围砖层进而离开缝隙。它后来若又进入了某个缺口依然遵循这个原则这就是为什么本节要叫这个名字Breakout的原因 ,小球必须 “Breakout”(弹出来).
*PS这段话不好翻译大概就是介绍打砖块的游戏规则
# OpenGL Breakout
我们将完全利用opengl实现这个经典的电脑游戏几乎是2d游戏的基础这个版本的Breakout将能够运行在一些可出特效的显卡上。
除了以上的这些特性我们的Breakout还将拥有
- 精灵渲染
- 粒子系统
- 文字渲染
- 道具
- 后期特效
- 多重关卡(可自定义)
为了引起大家的兴趣,让大家看看完成本教程后所制作的游戏的样子:
![](http://www.learnopengl.com/img/in-practice/breakout/cover.png)
这些教程将结合前面大量的概念,讲述了在之前所学的功能如何放在一起形成一个游戏。因此,最重要的是你完成了前面部分的教程。
同样有些东西也会提及其他教程的一些概念比如说帧缓冲Framebuffers所以有必要时被提及的教程会列出。
如果你已准备好开发本游戏,可以开始下一节了。