首页/ 第 5 章 · C# 编程基础/ 第 75 课
LESSON 75 · C# 编程基础

向量 Vector3 基础

Vector3 基础已掌握,C# 篇过半。下一课进入“游戏对象与组件交互”,开始让对象活起来!

⏱ 约 16 分钟📊 难度:入门🗂 第 5 章 · C# 编程基础📍 第 75 / 300 课
课程进度
75 / 300

🎯本节学习目标

  • 理解向量的含义
  • 掌握向量加减与缩放
  • 掌握常用向量属性

🚀课程导读

3D 世界的移动、朝向、距离全是向量。本课把 Vector3 讲透,它是 Unity 开发的地基。

什么是向量

“有方向、有大小”的量。

  1. Vector3 表示三维空间中的一个向量/坐标,三个分量 (x, y, z)。
  2. 在 Unity 中常用 new Vector3(x, y, z) 创建:new Vector3(1, 0, 0) 表示“向右 1 米”。
  3. 【两种理解】① 位置:世界中的一个点坐标;② 方向/位移:从一点指向另一点的“箭头”。
  4. transform.position 是一个 Vector3(位置);两个位置相减得到位移向量。
  5. 【常用常量】Vector3.zero = (0,0,0);Vector3.one = (1,1,1);Vector3.up = (0,1,0);Vector3.forward = (0,0,1);Vector3.right = (1,0,0)。
  6. 这些常量超常用:想让物体“向上移动”就用 Vector3.up。
💡
Vector3.up(向上)、forward(向前)、right(向右)是世界方向,写代码离不开它们。

向量运算

加减、缩放、距离。

  1. 【加法】位移叠加:new Vector3(1,0,0) + new Vector3(0,1,0) = (1,1,0)(斜着走)。
  2. 【减法】两点之差 = 从 B 指向 A 的方向:Vector3 dir = a.position - b.position;
  3. 【缩放】向量 × 数字:Vector3.up * 5f = 向上移动 5 米。
  4. 【长度 Magnitude】向量的大小:dir.magnitude 返回距离(米)。
  5. 【距离快捷】Vector3.Distance(a, b) 直接算两点距离。
  6. 【单位化 Normalized】方向不改变、长度变成 1:dir.normalized。
  7. 用法:需要“方向”时用 normalized,需要“距离”时用 magnitude。
  8. 例:Dir 规范化后 × 速度 × deltaTime = 匀速朝目标移动。
“两点相减得方向,normalized 得朝向,magnitude 得距离”——三句话背下来。

Unity 实战

让方块朝目标移动。

  1. 场景里放两个 Cube:A(红色)在原点,B(蓝色)在 (5, 0, 3)。
  2. 新建脚本 VectorDemo 挂到 A 上。
  3. 在 Update 里写:
  4. Vector3 dir = transform.position - target.position; // 指向目标的向量
  5. float dist = dir.magnitude; // 距离
  6. Debug.Log("距离:" + dist);
  7. dir = dir.normalized; // 单位方向
  8. transform.position += dir * 5f * Time.deltaTime; // 每秒向目标靠近 5 米
  9. target 用 public Transform 字段(第 84 课序列化)在 Inspector 拖入 B。
  10. 播放:A 匀速朝 B 移动!
  11. 这就是“追踪/移动”的雏形,第 80-81 课会系统讲组件 API。
💡
距离小于某阈值(如 0.5)就停止移动,加上这个判断更真实(追击停止逻辑)。

常见错误与排查

错误:移动方向不对(反了)?
原因:向量减法顺序反了
解决:a - b 是从 b 指向 a;想“朝目标移动”就用 target - self。

动手练习

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

  • 计算两个物体之间的距离并打印
  • 用 normalized + 速度实现匀速移动
  • 说出 magnitude 与 normalized 的区别

本节小结

Vector3 基础已掌握,C# 篇过半。下一课进入“游戏对象与组件交互”,开始让对象活起来!

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

← 上一课Time.deltaTime 帧间隔时间