![图片[1]-Unity近战战斗系统:第三人称动作与敌人AI-CG Tuto](https://img.cgtuto.com/wp-content/uploads/2026/10/d04883a35123786773afd1f95459f962.jpg!compress)
Create a Melee Combat System in Unity and C#
课程目标与系统设计
- 课程围绕 Unity 中的第三人称近战战斗系统展开,包含连招、反击和具备协调行为的敌人 AI;系统按模块化、数据驱动和可扩展的方式设计,并采用整洁编码实践。
- 课程描述的战斗方式是敌人绕玩家移动并协调进攻,而不是同时无序攻击;攻击方式也可从剑攻击改为拳击或踢击,无需为此修改代码。
第三人称控制器
- 从头搭建第三人称控制器,以此介绍游戏编程基础,并涉及动画根运动和根变换;项目设置使用 Unity 3D URP 模板创建测试场景、地面和棋盘格材质。
- 制作跟随玩家的第三人称相机,使其随鼠标旋转、限制俯仰角,并使用构图偏移观察角色胸部;还设置反转和光标锁定。
- 实现相机相对的角色移动,导入 Mixamo FBX 角色并提取纹理;用平面旋转和 Quaternion.RotateTowards 平滑旋转角色。
- 使用 Mixamo 人形重定向设置待机、行走和跑步动画,创建 Avatar 并关闭根运动;再通过 Animator Controller 和 Blend Tree 按移动量平滑混合动画。
- 使用 Character Controller 处理碰撞,并通过球体检测和 Layer Mask 手动检查地面、实现重力;配置左摇杆移动、右摇杆控制相机,并映射鼠标和摇杆输入轴。
攻击、受击与连招架构
- 导入 Mixamo 挥剑动画,配置 Animator 覆盖层,并通过协程处理攻击时序和输入,建立模块化近战攻击。
- 为玩家手部添加剑,并为敌人设置受击动画;攻击过程划分为蓄力、命中和冷却三个状态,只在命中阶段启用剑的碰撞体,以避免误击并支持连招。
- 使用 Scriptable Objects 架构攻击,通过攻击列表添加多个攻击并组合连招;以动画名称和起止时间替代硬编码值,使设计者可以编辑攻击组合。
- 为手和脚设置不同命中框,并按攻击启用相应的命中框;课程以使用右脚攻击为例说明不同攻击命中区域的配置。
敌人状态与战斗移动
- 用泛型有限状态机组织敌人 AI,将待机和追击分别实现为独立状态类,并使用 enter、execute、exit 处理状态进入、执行和退出。
- 通过带球形碰撞体的视野传感器检测范围和视野角内的玩家,再由 NavMesh Agent 追击;设置停止距离并配合动画。
- 实现敌人追击、保持防御待机或绕玩家移动的战斗移动状态,并在待机、追击和绕行之间平滑切换。
- 让敌人在战斗移动时随机绕玩家移动,使用计时器、随机范围和左右绕行动画混合;后续改用 NavMesh Agent 移动以绕行,并处理障碍物和其他敌人,通过二维 Blend Tree 使用前进与侧移速度驱动动画。
协同攻击、撤退与反击
- 使用单例敌人管理器和攻击状态,让多个敌人追击玩家并依次发动攻击。
- 攻击后通过向后行走动画和 NavMesh 撤退状态后退;撤退时保持面向玩家,并在距离达到三米时切换状态。
- 通过连招计数、冷却检查和公开攻击列表中的随机选择,让敌人执行单次攻击或随机连招。
- 使用 Mixamo 的攻击者与受击者动画配对实现反击,设置反击起手窗口,并处理 Animator 状态、角色旋转和死亡逻辑。
目标选择与战斗扩展
- 根据摄像机朝向选择最近的敌人作为目标,用发光着色器突出显示,并每 0.1 秒更新目标。
- 实现锁定战斗模式,让玩家锁定敌人、面向目标并在移动时侧移;锁定可由输入或攻击触发,课程也处理相关问题。
- 设置方向攻击和攻击时转向:受击时面向攻击者,朝选定方向攻击,并依据前方方向和最近敌人的逻辑选择目标;将攻击映射到手柄 X 键、锁定映射到左扳机。
- 受击后通过 getting hit 状态使敌人进入硬直,并使用委托和事件处理动作,同时调整目标查找逻辑;还加入基于 Mixamo 旋转挥斩动画、距离检查和朝目标移动的远距离攻击。
- 在攻击时间窗口内才向目标移动,使用移动起止时间和动画归一化时间控制移动,并跟踪当前目标与玩家位置以限制为单目标命中;随后处理空值检查、受击时停止协程、远距离攻击存在性检查和动态选择攻击者等边界情况。
- 实现玩家和敌人共用的生命值处理,包括可复用的受伤方法、生命值限制和死亡反应;敌人发现目标时,通过重叠盒、警戒范围和共享目标通知附近敌人。
适合人群
- 面向希望学习中级概念并创建可复用系统的 Unity 初学者。
前置基础
- 需要了解 C# 基础,例如条件判断和循环。
- 需要了解 Unity 基础。
使用软件
- 课程使用 Unity 和 C#;项目设置使用 Unity 3D URP 模板。
本站内容用于软件技术学习与流程研究。请支持课程原作者,并遵守相关软件及素材许可协议。
260500
本站所发布的课程、教程及相关素材均来源于互联网, 仅供学习与交流之目的, 版权归原作者或原版权所有者所有。
本站内容仅作为试看与参考使用, 请勿用于任何商业用途。 若相关内容对您有帮助, 请务必支持正版,购买官方授权版本。
请您在下载或观看后, 于 24 小时内 主动删除相关内容。 本站不参与任何课程或素材的制作、 录制及商业授权行为。
如本站内容无意中侵犯了您的合法权益, 请及时与我联系, 我们将在核实后第一时间删除或处理。
联系邮箱: 1735623125@qq.com
















暂无评论内容