首页/ 第 7 章 · 物理系统/ 第 102 课
LESSON 102 · 物理系统

物理查询与抛体运动

物理查询与抛体已掌握。下一课学拖拽物体。

⏱ 约 15 分钟📊 难度:入门🗂 第 7 章 · 物理系统📍 第 102 / 300 课
课程进度
102 / 300

🎯本节学习目标

  • 掌握物理查询方法
  • 实现范围检测
  • 实现抛物线发射

🚀课程导读

“周围有没有敌人?”用物理查询(OverlapSphere)扫一圈;“炮弹飞行的弧线”是抛体运动。本课两个硬核主题。

物理查询 Overlap 系列

检测“范围内的所有物体”。

  1. 【OverlapSphere】检测球形范围内的所有碰撞体:
  2. Collider[] hits = Physics.OverlapSphere(center, radius, layerMask);
  3. 返回一个碰撞体数组;空数组 = 范围内无物体。
  4. 【常用】炸弹爆炸范围内是否有敌人、主角周围是否有敌人进入。
  5. 【变体】OverlapBox(盒形)、OverlapCapsule(胶囊)。
  6. 【射线查询】SphereCast 带半径的射线。
  7. 【实战】地雷:OnTriggerEnter 引爆后,OverlapSphere 半径 5 内所有带 Enemy 标签的对象扣血。
  8. 【可视化】用 Gizmos.DrawWireSphere 在编辑器里画出检测范围(调试)。
  9. 【性能】OverlapSphere 较快,但仍避免每帧多次调用(可定时/事件触发)。
💡
Gizmos.DrawWireSphere 是调试范围检测的利器,开发时画出范围防“看不见的 bug”。

抛体运动(抛物线)

让炮弹沿弧线飞行。

  1. 【概念】抛体 = 有初速度 + 受重力,轨迹是抛物线。
  2. 【方式1 物理法】给炮弹刚体 + 一个初速度(AddForce/velocity),重力自动画弧:
  3. rb.velocity = 方向 * 初速; // 然后受重力自然下落成抛物线
  4. 【方式2 计算法】用抛物线公式:Vector3 pos = start + dir * t * speed + Vector3.down * 0.5f * gravity * t * t;
  5. 【取命中】射线预测落点、检测着地(第 101 课技巧)。
  6. 【弹道预测】用数学算出落点:t 满足 y 回到地面高度。
  7. 【实战】做一个“大炮”:炮口方向 + 固定初速,炮弹刚体发射,观察弧线。
  8. 【调参】初速越大弧越平,重力越大弧越陡。
  9. 【用途】投石车、手雷、篮球、炮弹。
💡
物理法(刚体+velocity)最简单,多数游戏够用;计算法用于“精确预测落点”(AI 瞄准)。

常见错误与排查

错误:抛物线看起来不对?
原因:初速方向或重力设置不当
解决:确认 velocity 方向是“斜上方”而非纯水平;Use Gravity 保持勾选。

动手练习

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

  • 用 OverlapSphere 检测 3 米内的敌人
  • 做一个带弧线的手雷(刚体+初速)
  • 用 Gizmos 画出检测范围

本节小结

物理查询与抛体已掌握。下一课学拖拽物体。

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

← 上一课射线检测进阶:图层过滤与命中信息