游戏开发对数学物理知识的要求比普通开发高。
游戏开发中很多地方都需要用到数学物理知识,特别是一线游戏开发大厂对数学知识算法要求非常高。
那么,我们今天就来列举一些游戏开发中常用的数学物理知识。
01、向量与三角函数
日常游戏开发中经常用到的数学知识就是三角函数、反三角函数、向量、向量分解等。比如玩家控制角色沿着某个方向行走;如何给角色正确的速度大小与方向,就需要上面的数学知识。先用得到方向向量,根据方向向量利用向量分解,把大小分解到对应的方向上。根据向量,利用反三角函数算出角度,获得角色移动的朝向。
02、常用的几何函数与求解
例1: 编写代码实现控制一个角色绕某个点做圆周运动,就是一个典型的数学问题:已知圆心,半径,要实现物体的圆周运动。
圆的方程 (x-x0)^2 + (y-y0)^2 = R^2, 其中x0, y0为圆心坐标, R为半径
圆的参数方程: x = x0 + R * cos(a); y = y0 + R * sin(a),其中a为角度。如下图所示:
了解完这个,写代码自然就有思路了:update不断的改变a的角度,带入公式算出x, y, 设置到新的节点即可。
例2:绘制一个抛物线的辅助轨迹出来,我们在编写设计类游戏的时候,经常需要绘制辅助轨迹,抛物线就是炮弹,篮球等最常用的轨迹,这就需要我们有抛物线的知识。
y = ax^2 + bx +c;
例子3:扇形
以玩家为中心在身后某个扇形范围内,随机生成对应的物体。如图:
已知圆形,已知左边边界角度,右边变界角度,最大半径
R,要在扇形范围内随机生成一个物体。
第1步:在[lhs, rhs]范围内随机生成一个角度,如上图红色的划线;
第2步:在[0, Rmax]内随机生成一个半径r;
第3步:带入圆形公式,求得位置。
例子4:直线方程与反射
台球游戏的时候,要做辅助线
03、贝塞尔曲线编辑路径
多段贝塞尔曲线可以勾画出任意形状的曲线,所以在地图路径编辑时,贝塞尔曲线是非常好的工具。使用贝塞尔曲线编辑好每段路径后把路径点生成出来,就可以编辑地图上的任意路径曲线形状了。大部分路径编辑都是通过贝塞尔曲线来完成。
04、常见模拟的物理运动
匀速直线运动、匀变速直线运动、运动的合成,这些常见的物理运动在游戏开发中经常需要徒手就写出来。比如,一个物体移动的时候要慢慢地停下;抽奖时数字滚动后最终要慢慢地停下来,这些都涉及到物理运动的模拟与计算。
05、3D游戏开发中常用的高等数学
3D游戏开发中向量、矩阵、四元数、法线、点乘、叉积是最常用的数学工具。
向量和2D差不多,只是多了一个维度,分解这些都是一样的。
矩阵其实就是数学工具,用来变化坐标的。3D里面矩阵有三种:平移、旋转、缩放,每个都可以是一个独立的矩阵,然后把这三个变化叠加在一起又是一个新的矩阵。比如,把模型A放大2倍后(缩放),放在世界的某个位置(平移),并朝向东北方向(旋转), 这样就把美术的模型变换到了世界中。这三个矩阵既可以分开又可以合并成一个矩阵,到时候每个模型点*这个矩阵,就把坐标变化到世界了。
四元数也是一个用来表示旋转很好的数学工具,以及它的原理这些。
06、图形图像学常用的数学知识
这里就不做过多详细讲解,我把程序员常用的初中高中数学知识点与大学知识点都列了出来,大家可以看下面的课程大纲。