首页/ 第 17 章 · 发布与进阶修炼/ 第 293 课
LESSON 293 · 发布与进阶修炼

进阶修炼:算法与数学基础

算法数学进阶完成。下一课学网络与多人基础。

⏱ 约 15 分钟📊 难度:入门🗂 第 17 章 · 发布与进阶修炼📍 第 293 / 300 课
课程进度
293 / 300

🎯本节学习目标

  • 掌握向量与插值
  • 了解寻路算法
  • 掌握常用数学

🚀课程导读

“向量、插值、A*”是游戏数学地基。本课把高频数学知识讲透。

向量与插值

“方向与平滑”。

  1. 【向量 Vector3】方向 + 大小:
  2. Vector3 dir = (target.position - transform.position).normalized; // 指向目标的方向
  3. 【点积 Dot】判断“前/后”:float dot = Vector3.Dot(forward, toTarget);
  4. 【叉积 Cross】左右判断(进阶)。
  5. 【距离】Vector3.Distance(a, b)。
  6. 【插值 Lerp】线性插值:
  7. Vector3.Lerp(from, to, t); // t 0-1
  8. 【SmoothDamp】平滑阻尼(相机跟随,第 216 课)。
  9. 【MoveTowards】匀速移动:Vector3.MoveTowards(current, target, maxSpeed * Time.deltaTime);
  10. 【旋转】Quaternion.LookRotation/Slerp(第 62/228 课)。
  11. 【完成】向量“熟练”。
  12. 【记忆】normalized 归一化(只要方向)、magnitude 大小。
💡
向量三兄弟:normalized(方向)、magnitude(大小)、Dot(前后判断)。高频必会。

寻路与随机

“认路”与“随机”。

  1. 【A* 算法】寻路经典:F=G+H(起点代价+预估代价),优先扩展最小 F。
  2. 【Unity 里】NavMesh 已封装 A*(第 251 课),理解原理即可。
  3. 【BFS/DFS】广度/深度优先搜索(图遍历,进阶)。
  4. 【随机】Random.Range/Random.value;随机方向 Random.insideUnitSphere。
  5. 【概率】按权重随机(掉落表):
  6. public static int WeightedRandom(int[] weights) {
  7. int total = 0; foreach (var w in weights) total += w;
  8. int roll = Random.Range(0, total);
  9. for (int i = 0; i < weights.Length; i++) { roll -= weights[i]; if (roll < 0) return i; }
  10. return 0;
  11. }
  12. 【抖动/Noise】Perlin Noise 做地形/流动(进阶)。
  13. 【完成】算法“有数”。
  14. 【推荐】理解 A* 原理 + 会写加权随机就够多数游戏。
进阶数学 = 向量(方向)+ Lerp(平滑)+ A*(寻路)+ 加权随机(掉落)。四件套。

常见错误与排查

错误:Lerp 用不明白?
原因:t 的含义不清
解决:t 是 0-1 的“进度”:0=起点、1=终点;每帧 Lerp(a,b,deltaTime*speed) 是“逼近”。

动手练习

课后小任务(做出来才算真的学会)

  • 用向量计算朝向与前后
  • 实现加权随机掉落
  • 理解 A* 与 NavMesh 关系

本节小结

算法数学进阶完成。下一课学网络与多人基础。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课进阶修炼:数据驱动开发