游戏开发中那些最常用的数学知识

简介: 游戏开发中那些最常用的数学知识

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


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


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


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


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


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


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


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


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


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


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

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


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

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

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

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

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

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

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

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

最后,再看一个例子。

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

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

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

实现的积木逻辑如下图。

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

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


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


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


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


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

相关文章
|
存储 前端开发 JavaScript
前端实现俄罗斯方块游戏(内含源码)
前端实现俄罗斯方块游戏(内含源码)
881 2
|
人工智能 关系型数据库 分布式数据库
沉浸式学习PostgreSQL|PolarDB 9: AI大模型+向量数据库, 提升AI通用机器人在专业领域的精准度, 完美诠释柏拉图提出的“知识是回忆而不是知觉”
越来越多的企业和个人希望能够利用LLM和生成式人工智能来构建专注于其特定领域的具备AI能力的产品。目前,大语言模型在处理通用问题方面表现较好,但由于训练语料和大模型的生成限制,对于垂直专业领域,则会存在知识深度和时效性不足的问题。在信息时代,由于企业的知识库更新频率越来越高,并且企业所拥有的垂直领域知识库(例如文档、图像、音视频等)往往是未公开或不可公开的。因此,对于企业而言,如果想在大语言模型的基础上构建属于特定垂直领域的AI产品,就需要不断将自身的知识库输入到大语言模型中进行训练。
2030 0
|
Kubernetes 安全 API
国内首个云上容器ATT&CK攻防矩阵发布,阿里云助力企业容器化安全落地
本文对云上容器ATT&CK攻防矩阵做了详细阐述,希望能帮助开发和运维人员了解容器的安全风险和落地安全实践。
16419 1
国内首个云上容器ATT&CK攻防矩阵发布,阿里云助力企业容器化安全落地
|
并行计算 监控 网络协议
西门子PLC常用的通讯接口和通讯协议有哪些?RS232、RS485、PPI、MPI、Modbus、Profibus、Uss的特点
西门子PLC常用的通讯接口和通讯协议有哪些?RS232、RS485、PPI、MPI、Modbus、Profibus、Uss的特点
西门子PLC常用的通讯接口和通讯协议有哪些?RS232、RS485、PPI、MPI、Modbus、Profibus、Uss的特点
|
消息中间件 算法 调度
深入探索嵌入式开发中的 FreeRTOS:从入门到精通
大家好,我是V哥。本文将带你从入门到深入掌握FreeRTOS,一款开源、轻量级的实时操作系统。FreeRTOS为嵌入式开发提供了高效的任务管理、资源调度等功能,极大提升了开发效率和系统可靠性。我们将探讨任务管理、通信同步、内存管理、调度算法、中断处理及性能优化等内容,助你在嵌入式开发中游刃有余。关注威哥爱编程,全栈之路共前行。
1086 0
|
JavaScript 前端开发 安全
JS 混淆解析:JS 压缩混淆原理、OB 混淆特性、OB 混淆JS、混淆突破实战
JS 混淆解析:JS 压缩混淆原理、OB 混淆特性、OB 混淆JS、混淆突破实战
1847 2
|
图形学 开发者
透视与正交之外的奇妙视界:深入解析Unity游戏开发中的相机与视角控制艺术,探索打造沉浸式玩家体验的奥秘与技巧
【8月更文挑战第31天】在Unity中,相机不仅是玩家观察游戏世界的窗口,更是塑造氛围和引导注意力的关键工具。通过灵活运用相机系统,开发者能大幅提升游戏的艺术表现力和沉浸感。本文将探讨如何实现多种相机控制,包括第三人称跟随和第一人称视角,并提供实用代码示例。
853 1
|
安全 NoSQL 关系型数据库
CentOS7下搭建并体验HFish开源蜜罐系统
CentOS7下搭建并体验HFish开源蜜罐系统
1483 0
CentOS7下搭建并体验HFish开源蜜罐系统
|
消息中间件 存储 Java
分布式事务在Java中的实现与优化
分布式事务在Java中的实现与优化
|
新零售 分布式计算 数据可视化
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析
数据分享|基于Python、Hadoop零售交易数据的Spark数据处理与Echarts可视化分析