3619 字
18 分钟
游戏开发中常用数学知识文档
2026-04-10

游戏开发中常用数学知识文档#

一、文档概述#

本文档系统梳理游戏开发全流程(从基础逻辑到核心渲染、物理模拟)中高频使用、必须掌握的数学知识,覆盖2D/3D游戏、主流引擎(Unity、Unreal、Godot等)开发、自研引擎实践等场景,明确各类数学知识的应用场景与核心作用,为游戏开发从业者提供清晰的数学知识参考,助力高效开发、规避数学相关技术问题。

二、基础数学(游戏开发的底层支撑)#

2.1 初等数学#

初等数学是游戏开发的基础,贯穿所有开发环节,无需复杂推导,但需熟练应用,核心内容包括:

  • 数值运算:实数、整数、浮点数的加减乘除、取模、取整(向上取整、向下取整、四舍五入),重点注意浮点数精度问题(如Unity中float与double的使用差异,避免精度丢失导致的逻辑bug)。

  • 幂运算与对数运算:幂运算用于角色属性计算(如等级提升后的伤害倍率)、缩放比例计算;对数运算用于资源衰减、难度梯度设计(如经验值需求随等级增长的曲线)。

  • 三角函数与反三角函数:核心用于角度计算、角色旋转、物体运动轨迹(如抛物线运动、圆周运动),重点掌握sin(正弦)、cos(余弦)、tan(正切)的含义及应用,以及角度与弧度的互换(引擎中多使用弧度计算,需注意转换逻辑)。

  • 常用恒等式与近似计算:用于简化运算、提升性能,如三角函数恒等式、近似公式,避免复杂计算占用过多资源。

2.2 坐标系基础#

坐标系是游戏中所有物体位置、运动的核心载体,不同场景需使用对应坐标系,核心内容包括:

  • 2D坐标系:笛卡尔坐标系(x轴水平、y轴垂直),用于2D游戏角色位置、UI布局、2D物理碰撞检测(如矩形、圆形碰撞的位置计算)。

  • 3D坐标系:分为左手系(Unity默认)和右手系(Unreal默认),核心区别在于z轴方向(左手系z轴向外,右手系z轴向内),需明确引擎坐标系规则,避免位置计算错误。

  • 坐标空间转换:掌握屏幕坐标、世界坐标、局部坐标、裁剪坐标的定义及转换逻辑,如将鼠标屏幕坐标转换为世界坐标(用于点击检测)、将角色局部坐标转换为世界坐标(用于场景交互)。

三、线性代数(游戏开发的核心数学)#

线性代数是3D游戏开发、图形渲染、角色运动的核心,核心解决“位置、旋转、缩放”三大问题,也是引擎底层的核心数学支撑,重点掌握向量、矩阵、四元数的应用。

3.1 向量(Vector)#

向量用于描述物体的位置、方向、速度、力等物理量,是游戏开发中最常用的数学工具,核心内容包括:

  • 向量定义:2D向量(x,y)、3D向量(x,y,z)、4D向量(x,y,z,w,用于齐次坐标转换),本质是“有大小、有方向的量”。

  • 向量运算:加减运算(用于位置偏移、方向合成,如角色移动方向=目标方向-当前位置)、数乘运算(用于缩放向量,如速度翻倍、力的大小调整)。

  • 点积(Dot Product):核心用途包括计算两个向量的夹角(如判断角色是否面向目标)、向量投影(如将移动方向投影到地面,避免空中漂移)、判断两个向量的前后关系(如敌人是否在玩家正前方)。

  • 叉积(Cross Product):仅适用于3D向量,核心用途包括计算法向量(用于面的朝向、光照计算)、判断两个向量的左右关系(如角色转弯方向判断)、确定旋转轴(如物体绕某一轴旋转)。

  • 向量归一化与长度计算:归一化(将向量长度转为1,保留方向,用于方向向量计算)、长度计算(用于计算两个物体的距离,如检测角色与敌人的距离是否在攻击范围内)。

  • 向量插值:LERP(线性插值,用于平滑移动、渐变效果,如角色位置平滑过渡)、NLERP(归一化线性插值,用于方向向量的平滑过渡,避免方向突变)。

3.2 矩阵(Matrix)#

矩阵用于描述物体的变换(平移、旋转、缩放),是引擎中处理物体姿态的核心工具,核心内容包括:

  • 矩阵基础:矩阵的加减、乘法运算(注意矩阵乘法不满足交换律),单位矩阵(对角线为1,其余为0,用于初始变换)、逆矩阵(用于反向变换,如将世界坐标转换为局部坐标)、转置矩阵(用于简化运算)。

  • 核心变换矩阵:

    • 平移矩阵:用于物体的位置移动,通过矩阵乘法将物体坐标偏移指定距离,是角色移动、场景切换的核心。

    • 缩放矩阵:用于物体的大小调整,如角色放大、道具缩小,可实现均匀缩放(x、y、z轴缩放比例一致)和非均匀缩放(各轴比例不同)。

    • 旋转矩阵:用于物体绕轴旋转,包括绕X轴(俯仰)、Y轴(偏航)、Z轴(翻滚)的旋转矩阵,以及基于欧拉角的组合旋转矩阵。

  • 组合变换顺序:物体变换需遵循“缩放→旋转→平移”的顺序(不可颠倒),否则会导致变换错误(如先平移再旋转,会出现位置偏移),通过组合变换矩阵可实现复杂的物体姿态调整。

  • 特殊矩阵:观察矩阵(用于定义相机视角,将世界坐标转换为相机视角坐标)、投影矩阵(分为透视投影和正交投影,透视投影用于3D游戏,模拟人眼视角;正交投影用于2D游戏、UI界面,无透视效果)。

3.3 四元数(Quaternion)#

四元数主要用于解决3D旋转中的“万向锁”问题(欧拉角旋转时,当两个轴旋转角度为90度时,会丢失一个旋转自由度),核心应用于3D角色、相机的旋转,内容包括:

  • 四元数基础:由一个实部和三个虚部组成,无需深入理解数学推导,重点掌握其应用场景。

  • 四元数运算:乘法(用于组合旋转,如角色先绕Y轴转,再绕X轴转)、求逆(用于反向旋转,如撤销旋转操作)、归一化(确保旋转角度正确,避免偏差)。

  • 球面插值(Slerp):用于四元数的平滑旋转,如相机跟随角色时的平滑转向、角色转身的渐变效果,比线性插值更自然,避免旋转卡顿。

  • 格式互转:掌握四元数与旋转矩阵、欧拉角的互转,如将欧拉角(角色旋转角度)转换为四元数进行旋转,再将四元数转换为矩阵用于引擎渲染。

四、几何数学(碰撞检测与场景构建)#

几何数学主要用于游戏中的碰撞检测、场景几何构建、物体形状判断,是物理模拟、场景交互的核心,核心内容包括:

4.1 基础几何元素#

  • 点、线、射线、线段:点用于描述物体位置;线和线段用于场景边界、角色移动路径;射线用于碰撞检测(如射线检测鼠标点击的物体、子弹射击检测)。

  • 平面、多边形:平面用于场景地面、墙面的构建,核心计算平面方程(用于判断点是否在平面上、物体与平面的碰撞);多边形(如三角形、矩形)用于2D精灵、3D模型的碰撞体(如Unity中的Mesh Collider)。

  • 常见几何体:圆形、椭圆(2D),球体、立方体、圆柱体、胶囊体(3D),用于碰撞体设计(如角色用胶囊体碰撞体,地面用立方体碰撞体),需掌握几何体的边界计算、距离计算。

4.2 碰撞检测相关数学#

碰撞检测是游戏交互的核心(如角色与障碍物碰撞、子弹击中敌人),核心数学逻辑包括:

  • 2D碰撞检测:点与点、点与线段、线段与线段、点与圆形、圆形与圆形、矩形与矩形的碰撞判断,如判断鼠标点击是否命中2D精灵、两个2D角色是否碰撞。

  • 3D碰撞检测:点与平面、射线与平面、射线与球体、球体与球体、立方体与立方体的碰撞判断,如子弹射线与敌人碰撞、角色与场景障碍物碰撞。

  • 碰撞响应:碰撞后的位置修正、速度变化(如角色撞到墙壁后停止移动、子弹击中敌人后反弹),需结合向量、力的计算。

五、物理模拟相关数学#

游戏中的物理模拟(如重力、浮力、碰撞反弹、物体运动)需基于经典力学数学知识,核心用于模拟真实的物体运动状态,提升游戏沉浸感,内容包括:

  • 运动学:位移、速度、加速度的计算(如角色匀速移动、加速跑、减速停止),自由落体运动(如物体从高处掉落,受重力影响加速),抛物线运动(如子弹发射、角色跳跃)。

  • 动力学:力的合成与分解(如角色在斜坡上受到的重力分解为沿斜坡和垂直斜坡的力)、摩擦力计算(如角色在地面移动的摩擦减速、物体在水中的阻力)、动量与冲量(如碰撞时的力量传递,如汽车碰撞后的速度变化)。

  • 约束条件:用于模拟物体的约束关系(如绳子牵引、关节连接),通过数学方程限制物体的运动范围,如角色的手臂关节旋转角度限制。

六、图形渲染相关数学#

图形渲染是游戏视觉呈现的核心,从顶点渲染到光影效果,均需依赖数学知识,核心用于将3D模型、材质、光照转换为屏幕上的2D图像,内容包括:

  • 顶点变换:将3D模型的顶点坐标,通过观察矩阵、投影矩阵,转换为屏幕坐标,实现3D模型的渲染。

  • 光照计算:漫反射、镜面反射的数学公式(基于法向量、光照方向向量、视角向量),用于模拟物体的光照效果(如金属的镜面反光、布料的漫反射);阴影计算(如阴影映射、软阴影),需结合矩阵、深度检测。

  • 纹理映射:将2D纹理贴合到3D模型表面,需通过UV坐标(纹理坐标)与模型顶点坐标的对应关系,实现纹理的正确显示,涉及UV坐标的计算与映射逻辑。

  • 颜色计算:RGB颜色空间、HSV颜色空间的转换,颜色的混合(如透明效果、叠加效果),用于材质颜色、UI颜色、特效颜色的调整。

七、游戏逻辑与AI相关数学#

游戏逻辑(如角色属性、关卡难度)、AI路径规划,需通过数学公式实现逻辑控制与智能决策,内容包括:

  • 角色属性计算:通过线性公式、非线性公式(如二次函数、指数函数)设计角色属性(如生命值、攻击力、防御力)随等级的变化,如攻击力=基础攻击力+等级×成长系数。

  • 概率与随机数:随机数生成(用于抽奖、敌人随机刷新、技能暴击),概率计算(如暴击概率、命中概率),确保随机效果的合理性与公平性。

  • AI路径规划:A*算法(核心基于距离计算、代价函数),用于AI角色寻找最优路径(如敌人追击玩家、NPC自主导航),涉及节点距离计算、路径代价评估。

  • 插值与平滑:除向量插值外,还包括数值插值(如角色血量渐变、技能冷却时间显示),用于提升游戏体验的流畅度。

八、开发注意事项#

  • 浮点数精度:游戏中多使用float类型(节省内存),需注意浮点数精度丢失问题(如0.1+0.2≠0.3),可通过乘以整数转换为整数运算,或使用误差范围判断(如两个浮点数差值小于1e-5则视为相等)。

  • 坐标系一致性:开发前需明确引擎的坐标系(左手系/右手系),避免坐标转换错误;不同坐标空间(世界坐标、局部坐标)的转换需遵循固定逻辑,避免位置偏移。

  • 性能优化:复杂数学运算(如矩阵乘法、大量碰撞检测)会占用较多CPU资源,可通过预计算(如提前计算常用矩阵)、简化运算(如用近似公式替代复杂公式)、分层检测(如远距离物体不进行精细碰撞检测)提升性能。

  • 工具依赖:主流引擎(Unity、Unreal)已封装好大部分数学工具(如向量、矩阵运算),无需重复实现,但需理解底层数学逻辑,避免使用错误(如混淆四元数与欧拉角的应用场景)。

九、总结#

游戏开发中的数学知识,核心围绕“位置、旋转、缩放、碰撞、运动、渲染”六大核心场景,基础数学是底层支撑,线性代数是核心工具,几何数学、物理数学、渲染数学是场景化应用。实际开发中,无需深入推导复杂的数学公式,但需熟练掌握各类数学知识的应用场景、核心运算及注意事项,结合引擎工具,高效实现游戏功能,提升游戏体验。对于不同类型的游戏(2D/3D、休闲/竞技),需重点掌握对应场景的数学知识,如2D游戏侧重初等数学、2D向量与几何,3D游戏侧重线性代数、3D碰撞与渲染数学。

(注:文档部分内容可能由 AI 生成)

游戏开发中常用数学知识文档
https://021028.xyz/posts/default/49/
作者
021028
发布于
2026-04-10
许可协议
CC BY-NC-SA 4.0