我想编写比我已经掌握的基本 2D 游戏更复杂的图形 2D 游戏。我不想进行 3D 编程,只是想做更复杂的 2D 编程。在我能够学到很多东西之前,我就辍学了,所以我只有足够的代数知识来平衡我的支票账户并进行一些轻量级的二维笛卡尔编程。
是否有任何好的资源供一个注意力有限的人使用(比如我每次只能关注 20 分钟)逐渐学习如何在编程中运用数学来实现更有用的东西?
即使您不想进行3D编程,2D游戏也使用向量和矩阵。(来自线性代数)
在进行三角函数编程时,一个能够节省大量工作的要点是意识到需要使用 atan2() 函数,而不是 atan() 函数。这在确定两个点之间的方向时非常重要。
能够在各种坐标系之间移动是一个很大的优势。这需要经验。让人们困惑的两个常见问题是:
a) 大多数屏幕系统将原点(0,0)放在左上角,正 x 轴向右延伸,正 y 轴向下延伸。标准笛卡尔坐标假定第一象限的原点(其中 x 和 y 始终为正或零)在左下角。这需要程序员在某个阶段“翻转”y方向。
b) 典型的地理学将0度作为北方,正度数顺时针扫过。所有三角函数将0度作为东方,正度数逆时针扫过。
最后,即使我们倾向于使用度数,真正的库也会使用弧度。 最佳实践是将角度存储为弧度(在“数学”方向而不是“地理”方向),并在显示调试信息时进行转换。
GameDev.net有一个数学和物理编程文章的栏目。快速浏览一下,看看是否与您正在尝试做的事情相关。
我不同意推荐《物理学为游戏开发者》这本书。
我觉得那本书相当无聊,而且我也不认为我的注意力会那么短。
我认为要想变得优秀,最重要的是掌握向量,使用三角函数来操作它们,然后在此基础上应用与你当前项目相关的物理知识。
我只是打开谷歌/维基百科,开始浏览网页,吸收一些随机的东西,当你的有限注意力变得焦躁时,再去浏览其他内容。
阅读那本书可能不会让你沉迷其中并激发灵感。
1. VECTORS
2. FORCES
3. OSCILLATION
4. PARTICLE SYSTEMS
5. PHYSICS LIBRARIES
6. AUTONOMOUS AGENTS
7. CELLULAR AUTOMATA
8. FRACTALS
9. THE EVOLUTION OF CODE
10. NEURAL NETWORKS
奇怪的是,我在维基百科上发现了很多关于线性代数的有用资料:http://en.wikipedia.org/wiki/Portal:Mathematics
通常来说,它不是最好的知识来源,但里面的数学还可以。