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

1,587 阅读6分钟

嗨!大家好,我是会做游戏也会教你做游戏的小蚂蚁。欢迎关注微信公众号【小蚂蚁教你做游戏】,每天学点儿做游戏的知识。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最后,再看一个例子。

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

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

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

实现的积木逻辑如下图。

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

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

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

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

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

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