游戏开发中最常用的基础数学知识

简介: 我们也经常听到有人这样说:想学做游戏或者想学编程呀,你的数学得要好。数学学得好,逻辑思维才能好,才能把编程或者做游戏学好。这句话看上去好像是有道理,但是细琢磨一下,其中有不少的问题。想学好编程,严谨缜密的逻辑思维确实很重要,但是逻辑思维这个东西并不是天生的,是后天通过锻炼习得的,锻炼它的方式有很多,学数学或者学习编程都能够有效的锻炼一个人的逻辑思维能力。

嗨!大家好,我是小蚂蚁。

“一遇到与数学有关的东西头就大了”,经常听到有做游戏的人这样说,数学似乎成了不少人的绊脚石,或者可以说是一堵墙,每当遇到它时,要么摔一跤,要么只能想办法绕路走,总之能不碰就不碰,因为一碰到就头大。

我们也经常听到有人这样说:想学做游戏或者想学编程呀,你的数学得要好。数学学得好,逻辑思维才能好,才能把编程或者做游戏学好。这句话看上去好像是有道理,但是细琢磨一下,其中有不少的问题。想学好编程,严谨缜密的逻辑思维确实很重要,但是逻辑思维这个东西并不是天生的,是后天通过锻炼习得的,锻炼它的方式有很多,学数学或者学习编程都能够有效的锻炼一个人的逻辑思维能力。

晓得上面那句话的逻辑谬误了吗?不论是学习数学,还是学习编程,都是锻炼一个人逻辑思维的方式,因为这两者对于思维的要求非常的严谨,稍有差池就会带来一个错误的结果。所以学习它们适合锻炼一个人严谨缜密的思维,你的逻辑思维是因为学习这两者而锻炼出来的,而不是要先要具备一定的逻辑思维,才能够进行学习。

好了,说回到我们今天要讲的数学。可以说大部分人之所以遇到它就头疼,都是因为在学校留下的后遗症。对于应试的学习已经怕了,而且这个怕已经深深的植根在潜意识里了。所以,现在即使你不需要再去应试了,看到它还是会怕。

破除潜意识中对于数学的恐惧,这是我们首先要解决的问题。其实方法很简单,你就想反正现在也不用考试,即使搞不懂也不会有什么坏结果,不用看着卷子上的分数心生愧疚,不会挨批,也不用请家长。搞不懂现在对我来说没有任何的影响。

好了,现在就可以放下心里的芥蒂,来正面直视一下它了,看看是不是数学就是那么的难。

心里这关过了之后,接下来我们就可以来看一下游戏开发中最常用的基础数学知识了。

不用担心,很少的,比你想要的还要少。在日常的游戏开发过程中,基本上 90% 以上的与数学有关的知识只有一个:三角函数

是的,就这么多。这应该是初中的数学知识,如果你不涉及游戏引擎底层的原理和实现,不涉及游戏开发中的光照以及着色器的编写,那么只要把三角函数搞明白了,就能解决日常开发中的 90% 的数学问题了。

三角函数都是些什么呢?请自行去任何一个搜索引擎中搜索关键字“三角函数”,然后仔细的阅读。

三角函数在游戏中都有哪些应用呢?我们简单的举几个例子吧!

例如,在射击游戏中,敌人会向角色发射子弹,如何让敌人发射的子弹能够朝向角色移动,并且子弹头要指向角色呢?

如图,我们可以以角色为中心构建一个坐标系,这样子弹和角色就可以在坐标系中构建出一个直角三角形,这个直角三角形的斜边就是子弹的飞行轨迹,子弹要沿着这条线飞向角色,并且要朝向角色。此时,我们可以利用角色和子弹的坐标,计算出两条直角边的长度,然后利用反正切函数,计算出角度 a,有了角度 a ,就能够设置子弹的旋转,让子弹朝向角色飞行了。

其中涉及到数学计算的积木其实就只有一块,但是我们可以借助它实现出这样的效果。

再举个应用的例子:有两段机械臂,绿色的机械臂可以通过摇杆控制旋转,现在需要蓝色的机械臂上红点的位置,始终位于绿色机械臂蓝点的位置上,让蓝色机械臂始终跟随着绿色的机械臂进行旋转。

实现这个功能仍旧需要借助三角函数的知识,已知斜边的长度,以及斜边和直角边的夹角,可以借助三角函数中的正弦函数余弦函数,计算出两个直角边的长度。

具体的积木逻辑也非常的简单。

涉及到数学计算的积木有两块,但是我们可以实现出下面这样的效果。

这是有人花 99 元付费咨询的一个问题(愿意耐心阅读的你赚到了),你看多学点儿数学知识就能帮你赚钱了,这是不是就是“知识就是金钱”的真实写照?

最后,再看一个例子。

如何让游戏中的一个精灵围绕着另一个指定的精灵或者位置进行旋转呢?

如图,蓝色方块围绕着红色方块转动,可以看作是蓝色方块以红色方块的中心为圆点,以固定的距离为半径,在这个圆上移动。

在旋转的过程中,角度 a 是在不断的变化的,可以利用三角函数中的正弦函数和余弦函数来计算出蓝色方块的位置坐标,这样在循环中通过不停的设置蓝色方块的坐标就能够实现绕圈的圆周运动。

实现的积木逻辑如下图。

涉及到数学计算的积木有两块,但是我们可以借助它们实现出下面这样的效果。

例子还有很多,就不再一一列举了。

总之,三角函数这一点儿数学知识值得你好好的去搞透了,做这件事是非常值得的,因为搞明白了这点儿东西,你就解决了日常游戏开发中所遇到的 90% 的与数学有关的问题了。

当你学习一个知识不再是为了考试的时候,学习本身的乐趣就会体现出来了。我从小学开始就恐惧英语,一直恐惧到大学,后来工作后,因为需要阅读很多的英文文档,读的多了慢慢的就发现好像英语也没那么难嘛!尤其是当你学到的东西能够得到应用的时候,带来的反馈是很强烈的。你能深切的感受到,自己所学的知识帮助自己解决了一些问题,带来了一些改变,甚至是赚到了一些钱。此时,学习便成为了一件有趣的事情。

面对游戏开发中的基础数学知识,是选择依旧头疼,还是选择静下心来把这点儿东西搞明白呢?

尝试一下后者吧!躲来躲去的总不是办法,有的时候进一步就是海阔天空。

我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的公众号就对啦!

这里是我的游戏开发课程服务,不只是一门课,而是围绕着新手学习做游戏有关的一整套服务。致力于帮助更多的人学会做游戏并做出自己的游戏,欢迎来跟 111 位同学一起学习做游戏。【点击这里】了解课程服务详情。

这里是小蚂蚁的小游戏系列,闲暇之余希望能给你带来片刻的放松和愉悦。无需下载安装,点击下方的游戏卡片就可以直接玩啦!









也欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取学习做游戏的原创教程资料。接受付费咨询,不闲聊,望见谅。

目录
打赏
0
0
0
0
15
分享
相关文章
代码之美:从技术实现到艺术创作的思考
【7月更文挑战第26天】在数字世界中,代码是构建一切的基石。它不仅仅是冷冰冰的指令集合,更是连接人类思维与计算机执行的桥梁。本文将探讨如何通过技术实现提升代码的艺术性,使其不仅高效、可靠,同时也具备美感和创造性,从而让编程成为一种艺术创作过程。
从零起步,到亲手实现:一步步教你用Unity引擎搭建出令人惊叹的3D游戏世界,绝不错过的初学者友好型超详细指南 ——兼探索游戏设计奥秘与实践编程技巧的完美结合之旅
【8月更文挑战第31天】本文介绍如何使用Unity引擎从零开始创建简单的3D游戏世界,涵盖游戏对象创建、物理模拟、用户输入处理及动画效果。Unity是一款强大的跨平台游戏开发工具,支持多种编程语言,具有直观编辑器和丰富文档。文章指导读者创建新项目、添加立方体对象、编写移动脚本,并引入基础动画,帮助初学者快速掌握Unity开发核心概念,迈出游戏制作的第一步。
469 1
代码之美:从技术实现到艺术创作
在数字化时代的浪潮中,编程不仅仅是冷冰冰的代码堆砌,它更像是一种艺术形式。本文将通过探索编程语言的设计哲学、算法的美学以及软件开发过程中的创新思维,揭示编程背后的深层美学价值和创造性思考。我们将一同走进程序员的内心世界,理解他们如何在严谨的逻辑与无限的可能性之间舞蹈,把枯燥的技术实现转变为令人赞叹的艺术创作。
【独家揭秘】当WPF邂逅DirectX:看这两个技术如何联手打造令人惊艳的高性能图形渲染体验,从环境搭建到代码实践,一步步教你成为图形编程高手
【8月更文挑战第31天】本文通过代码示例详细介绍了如何在WPF应用中集成DirectX以实现高性能图形渲染。首先创建WPF项目并使用SharpDX作为桥梁,然后在XAML中定义承载DirectX内容的容器。接着,通过C#代码初始化DirectX环境,设置渲染逻辑,并在WPF窗口中绘制图形。此方法适用于从简单2D到复杂3D场景的各种图形处理需求,为WPF开发者提供了高性能图形渲染的技术支持和实践指导。
532 0
探索代码之美:高效编程的艺术与实践
【7月更文挑战第52天】在数字世界的构建过程中,编程不仅仅是一门科学,更是一种艺术。本文将深入探讨如何通过高效的编程实践来提升代码质量、优化开发流程,并且分享在此过程中所获得的技术感悟。我们将从代码的简洁性、可读性和性能优化三个维度出发,分析并提出实用的编程技巧和策略,旨在帮助开发者在追求效率的同时,也能享受编程带来的乐趣和成就感。
|
11月前
|
游戏开发中那些最常用的数学知识
游戏开发中那些最常用的数学知识
234 0
嵌入式系统软件架构设计(长篇深度好文)
嵌入式系统软件架构设计(长篇深度好文)
5931 1
游戏开发:碰撞模型,球球大作战小游戏【VB编程经典案例】
游戏开发:碰撞模型,球球大作战小游戏【VB编程经典案例】
153 0
漫画:出色的程序员具有哪些特质?
出色的程序员往往具有几方面的特质,这些特点里有的更重要,有的作用略低,以小灰个人的见解,为这些特点从低到高划分了5个星级。
3412 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等