U
Unity
星辰学院
首页
课程表
章节导览
第 1 课
返回主站
首页
/
第 14 章 · 3D 游戏进阶
/
第 239 课
LESSON 239 · 3D 游戏进阶
3D 环境交互(物理环境)
环境交互完成。下一课做 3D 动画进阶。
⏱ 约 15 分钟
📊 难度:
入门
🗂 第 14 章 · 3D 游戏进阶
📍 第 239 / 300 课
课程进度
239 / 300
🎯
本节学习目标
实现推箱子
实现可破坏物
实现物理机关
🚀
课程导读
箱子能推、花瓶能碎、桥能晃——物理环境交互让场景“可信”。本课实现。
◆
推箱子与可推动物
角色推得动。
【推箱子】箱子加 Rigidbody(质量适中,如 2-5)+ BoxCollider。
角色用 CharacterController 推:物理自动处理(角色碰到箱子推动它)。
【问题】CharacterController 推刚体效果弱——需要专门处理:
用“推力”:角色移动时检测前方物体是“可推”,给物体施加力。
【简单方案】箱子质量小(1-2)+ 角色碰撞推动(自动有效)。
【物理材质】箱子材质 Friction 低(推得动)。
【可推动物】椅子、木桶:加刚体即可被推动。
【注意】大物体(保险箱)质量大推不动(合理的物理)。
【测试】角色推箱子移动、箱子撞墙停。
【完成】“推得动”了!
💡
推箱子 = 刚体 + 合适质量 + 低摩擦。物理自动处理。
◆
可破坏物与机关
打碎、踩下、吊起。
【可破坏物】花瓶/箱子带 hp:
public int hp = 1;
public void TakeDamage(int dmg) {
hp -= dmg;
if (hp <= 0) Break();
}
void Break() {
// 碎片特效+音效+掉落物
ObjectPool.Instance.GetDebris(transform.position);
AudioManager.Instance.PlaySFX(breakSound);
Instantiate(dropItem, transform.position, Quaternion.identity);
Destroy(gameObject);
}
【碎片】用粒子或几块小几何体模拟碎片。
【物理按键】压力板:触发器检测重量(玩家或箱子):
void OnTriggerStay(Collider o) { if (o.CompareTag("Player") || o.CompareTag("Box")) activated = true; }
【吊桥】桥板用 HingeJoint 连接(第 233 课),踩上会晃/放平。
【联动】可破坏物触发机关(打碎罐子出钥匙)。
【测试】打碎花瓶、踩板开门、桥会晃。
【完成】场景“处处有戏”!
✅
环境交互 = 可破坏(hp+碎片)+ 物理机关(压力/铰链)+ 联动。组合无穷。
⚠
常见错误与排查
⛔
错误:
箱子推不动?
原因:
质量太大或摩擦太大
解决:
箱子质量设小;物理材质 Friction 调低;角色速度够。
★
动手练习
课后小任务(做出来才算真的学会)
做可推箱子
做可破坏花瓶与掉落物
做压力板联动门
✓
本节小结
环境交互完成。下一课做 3D 动画进阶。
标记为已完成
完成打卡后,主站会实时更新你的学习进度 🎯
← 上一课
3D 门与开关机制
下一课 →
3D 动画进阶(混合树与层)
↑