U
Unity
星辰学院
首页
课程表
章节导览
第 1 课
返回主站
首页
/
第 14 章 · 3D 游戏进阶
/
第 242 课
LESSON 242 · 3D 游戏进阶
3D 角色布娃娃实战
布娃娃实战完成。下一课做 3D 物理破碎。
⏱ 约 14 分钟
📊 难度:
入门
🗂 第 14 章 · 3D 游戏进阶
📍 第 242 / 300 课
课程进度
242 / 300
🎯
本节学习目标
实现死亡布娃娃
实现动画切物理
实现复活
🚀
课程导读
第 144 课学布娃娃原理,本课实战:角色死亡“瘫倒”、复活“站起”。
◆
死亡布娃娃
倒下的一瞬。
【结构】角色模型下挂布娃娃控制器脚本(第 144 课生成器 + 禁用逻辑)。
【RagdollController】
public class RagdollController : MonoBehaviour {
private Rigidbody[] rigidbodies;
private Animator anim;
void Awake() {
rigidbodies = GetComponentsInChildren<Rigidbody>();
anim = GetComponent<Animator>();
SetRagdoll(false);
}
public void Activate() { SetRagdoll(true); anim.enabled = false; }
public void Deactivate() { SetRagdoll(false); anim.enabled = true; }
void SetRagdoll(bool active) {
foreach (var rb in rigidbodies) { rb.isKinematic = !active; }
}
}
【死亡】角色 hp<=0 时:ragdoll.Activate();
【效果】角色“瘫倒”,物理接管,四肢自然下垂。
【注意】激活前把角色从控制器/交互中移除(禁脚本)。
【测试】打死敌人,尸体瘫倒。
【完成】“死得真实”。
【说明】头部/骨盆等大骨要 isKinematic 保结构(可选)。
💡
死亡布娃娃 = 关 Animator + 开刚体。一关一开,尸体“瘫”。
◆
物理力与复活
“被打飞”与“站起来”。
【击飞】受击时给布娃娃加力:
public void Hit(Vector3 force) {
Activate();
// 给身体各刚体加力
foreach (var rb in rigidbodies) rb.AddForce(force, ForceMode.Impulse);
}
【效果】角色被炸飞、四肢乱舞(动作游戏高光时刻)。
【延迟复活】敌人死后延时销毁:Destroy(gameObject, 3f);
【玩家复活】死亡后:
RagdollController.Instance.Deactivate(); // 关布娃娃
transform.position = spawnPoint.position; // 复位
anim.Play("Idle");
【注意】复活前要复位位置/旋转(否则“鬼畜”)。
【复位】把角色 Transform 复位到重生点再 Deactivate。
【测试】击飞敌人、玩家死后复活。
【完成】布娃娃玩法完整!
【注意】布娃娃很耗性能,只给重要角色(玩家/精英怪)用。
【优化】远处敌人不用布娃娃(距离判断)。
✅
布娃娃玩法 = 死亡瘫倒 + 受击加力 + 复位复活。三种“剧本”全覆盖。
⚠
常见错误与排查
⛔
错误:
复活后角色姿势错乱?
原因:
没复位或 Animator 没恢复
解决:
复活时先复位 Transform 到重生点,再 Deactivate + anim.Play("Idle")。
★
动手练习
课后小任务(做出来才算真的学会)
实现死亡瘫倒
实现受击击飞加力
实现玩家死亡复活
✓
本节小结
布娃娃实战完成。下一课做 3D 物理破碎。
标记为已完成
完成打卡后,主站会实时更新你的学习进度 🎯
← 上一课
3D 角色换装系统
下一课 →
3D 物理破碎与可破坏
↑