U
Unity
星辰学院
首页
课程表
章节导览
第 1 课
返回主站
首页
/
第 17 章 · 发布与进阶修炼
/
第 293 课
LESSON 293 · 发布与进阶修炼
进阶修炼:算法与数学基础
算法数学进阶完成。下一课学网络与多人基础。
⏱ 约 15 分钟
📊 难度:
入门
🗂 第 17 章 · 发布与进阶修炼
📍 第 293 / 300 课
课程进度
293 / 300
🎯
本节学习目标
掌握向量与插值
了解寻路算法
掌握常用数学
🚀
课程导读
“向量、插值、A*”是游戏数学地基。本课把高频数学知识讲透。
◆
向量与插值
“方向与平滑”。
【向量 Vector3】方向 + 大小:
Vector3 dir = (target.position - transform.position).normalized; // 指向目标的方向
【点积 Dot】判断“前/后”:float dot = Vector3.Dot(forward, toTarget);
【叉积 Cross】左右判断(进阶)。
【距离】Vector3.Distance(a, b)。
【插值 Lerp】线性插值:
Vector3.Lerp(from, to, t); // t 0-1
【SmoothDamp】平滑阻尼(相机跟随,第 216 课)。
【MoveTowards】匀速移动:Vector3.MoveTowards(current, target, maxSpeed * Time.deltaTime);
【旋转】Quaternion.LookRotation/Slerp(第 62/228 课)。
【完成】向量“熟练”。
【记忆】normalized 归一化(只要方向)、magnitude 大小。
💡
向量三兄弟:normalized(方向)、magnitude(大小)、Dot(前后判断)。高频必会。
◆
寻路与随机
“认路”与“随机”。
【A* 算法】寻路经典:F=G+H(起点代价+预估代价),优先扩展最小 F。
【Unity 里】NavMesh 已封装 A*(第 251 课),理解原理即可。
【BFS/DFS】广度/深度优先搜索(图遍历,进阶)。
【随机】Random.Range/Random.value;随机方向 Random.insideUnitSphere。
【概率】按权重随机(掉落表):
public static int WeightedRandom(int[] weights) {
int total = 0; foreach (var w in weights) total += w;
int roll = Random.Range(0, total);
for (int i = 0; i < weights.Length; i++) { roll -= weights[i]; if (roll < 0) return i; }
return 0;
}
【抖动/Noise】Perlin Noise 做地形/流动(进阶)。
【完成】算法“有数”。
【推荐】理解 A* 原理 + 会写加权随机就够多数游戏。
✅
进阶数学 = 向量(方向)+ Lerp(平滑)+ A*(寻路)+ 加权随机(掉落)。四件套。
⚠
常见错误与排查
⛔
错误:
Lerp 用不明白?
原因:
t 的含义不清
解决:
t 是 0-1 的“进度”:0=起点、1=终点;每帧 Lerp(a,b,deltaTime*speed) 是“逼近”。
★
动手练习
课后小任务(做出来才算真的学会)
用向量计算朝向与前后
实现加权随机掉落
理解 A* 与 NavMesh 关系
✓
本节小结
算法数学进阶完成。下一课学网络与多人基础。
标记为已完成
完成打卡后,主站会实时更新你的学习进度 🎯
← 上一课
进阶修炼:数据驱动开发
下一课 →
进阶修炼:网络与多人基础
↑