首页/ 第 6 章 · 游戏对象与组件交互/ 第 81 课
LESSON 81 · 游戏对象与组件交互

Transform 常用 API

Transform API 已掌握。下一课学协程 Coroutine。

⏱ 约 16 分钟📊 难度:入门🗂 第 6 章 · 游戏对象与组件交互📍 第 81 / 300 课
课程进度
81 / 300

🎯本节学习目标

  • 掌握移动类 API
  • 掌握旋转与朝向
  • 掌握坐标转换

🚀课程导读

transform 是每个对象都有的组件,操控它的位置/旋转是写游戏逻辑的第一步。本课汇总最常用的 API。

移动与位置

让对象“动起来”。

  1. 【直接改位置】transform.position = new Vector3(1, 2, 3);(世界坐标瞬移)。
  2. 【相对自身移动】transform.Translate(Vector3.forward * speed * Time.deltaTime); 沿自身前方移动,配合旋转可实现“朝哪走哪”。
  3. 【Translate 方向参数】transform.Translate(dir, Space.Self)(自身空间,默认)或 Space.World(世界空间)。
  4. 【取位置】transform.position(世界)、transform.localPosition(局部)。
  5. 【取朝向】transform.forward(前方单位向量)、transform.right、transform.up。
  6. 【插值移动】transform.position = Vector3.MoveTowards(current, target, speed * Time.deltaTime); 匀速靠近目标,好用。
  7. 【平滑移动】Vector3.Lerp(线性插值):transform.position = Vector3.Lerp(a, b, t); t 是 0-1 的比例。
💡
MoveTowards 匀速、Lerp 渐进,是两个高频移动方案,务必掌握。

旋转与朝向

让对象“转起来”。

  1. 【直接设旋转】transform.rotation = Quaternion.Euler(0, 90, 0); 用欧拉角转 90 度(Quaternion 四元数,避免直接设角度)。
  2. 【旋转增量】transform.Rotate(0, 90, 0); 绕 Y 轴转 90 度;transform.Rotate(Vector3.up, 90f); 等价。
  3. 【旋转速度】transform.Rotate(Vector3.up * rotateSpeed * Time.deltaTime); 持续旋转。
  4. 【看向目标】transform.LookAt(target); 让对象正面朝向目标位置(自动旋转 Z 轴对齐)。
  5. 【获取角度】transform.eulerAngles 返回 (x,y,z) 角度。
  6. 【朝向目标方向移动】dir = (target - transform.position).normalized; transform.Translate(dir * speed * Time.deltaTime, Space.World);
  7. 【Quaternion 要点】rotation 是四元数,不能直接改 x/y/z,用 eulerAngles 或 Rotate。
  8. 【平滑旋转】Quaternion.Slerp(球面插值):transform.rotation = Quaternion.Slerp(a, b, t);
永远不要直接改 transform.rotation.x/y/z!用 Quaternion.Euler 或 Rotate。四元数第 2 课会深讲。

父子操作

管理层级。

  1. 【取父对象】transform.parent 或 transform.root(最顶层)。
  2. 【设父对象】transform.SetParent(newParent, true); 第二个参数 true=保持世界坐标。
  3. 【子对象数量】transform.childCount。
  4. 【取第几个子对象】transform.GetChild(0)。
  5. 【遍历子对象】foreach (Transform child in transform) { ... }。
  6. 【查找子对象】transform.Find("名字") 按名字找子对象(比 Find 快)。
  7. 【销毁所有子对象】在子对象列表里逐个 Destroy。
  8. 【本地与世界坐标转换】transform.InverseTransformDirection(dir) 把世界方向转成自身方向;TransformPoint 等。
  9. 【实用组合】把武器挂到手上:weapon.SetParent(hand, false);
Transform API 是 3D 编程的基本功:translate 移动、rotate 旋转、lookAt 朝向、setParent 挂载。

常见错误与排查

错误:旋转数值莫名“跳变”?
原因:直接改了 Quaternion 的 x/y/z
解决:使用 Quaternion.Euler 赋值或用 eulerAngles。

动手练习

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

  • 用 Translate 让物体沿自身前方移动并旋转
  • 用 LookAt 让物体始终看向目标
  • 用 SetParent 把子弹挂到枪口上

本节小结

Transform API 已掌握。下一课学协程 Coroutine。

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

← 上一课组件访问 GetComponent