news 2026/7/7 0:08:05

Netcode for GameObjects Boss Room 多人RPG战斗(18)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Netcode for GameObjects Boss Room 多人RPG战斗(18)

Action系统中的Input处理流程

1. 客户端输入捕获

在Boss Room项目中,客户端的输入捕获主要由ClientInputSender.cs类负责。该类使用Unity的Input系统在Update()方法中监听各种输入事件:

  • 键盘输入:监听数字键1-8,分别对应不同的技能和表情动作
  • 鼠标输入:监听左键(移动)和右键(技能1/目标操作)
  • UI输入:处理来自UI元素的输入事件

当检测到有效输入时,会调用RequestAction()方法将输入请求放入队列中等待处理。

2. 输入处理与转换

输入请求在FixedUpdate()方法中被处理,主要流程如下:

  1. 请求队列处理:按FIFO顺序处理输入请求
  2. 技能触发判断:检查技能是否可以释放(冷却时间、资源等)
  3. 输入类型适配:根据输入触发方式(键盘、鼠标、UI等)构建不同的动作请求数据
  4. 目标选择:确定技能的目标(如果需要)

核心方法PerformSkill()是所有输入驱动技能的公共入口,它根据输入类型和技能配置构建ActionRequestData对象。

3. 目标选择与上下文处理

在构建动作请求时,系统会根据目标类型和上下文信息进行智能处理:

  • 目标检测:通过射线检测或网络对象ID查找目标
  • 上下文适配:例如,右键点击倒地的队友会自动将普通攻击转换为复活技能
  • 目标验证:确保目标是有效的(存在且在可攻击范围内)

GetActionRequestForTarget()方法处理复杂的目标选择逻辑,包括:

  • 检查目标是否存在且有效
  • 根据目标状态(如倒地的队友)动态修改技能ID
  • 记录目标信息用于后续动作执行

4. 动作请求发送

当动作请求数据构建完成后,SendInput()方法将通过ServerPlayActionRpc远程调用将请求发送到服务器:

voidSendInput(ActionRequestDataaction){ActionInputEvent?.Invoke(action);m_ServerCharacter.ServerPlayActionRpc(action);}

5. 服务器端处理

服务器接收动作请求后,由ServerCharacter.csServerActionPlayer.cs协同处理:

  1. 请求验证:检查角色是否存活且可以执行动作
  2. 动作创建:使用ActionFactory.CreateActionFromData()创建动作实例
  3. 动作队列管理:将新动作添加到队列中
  4. 动作合成:根据动作配置合成额外的辅助动作(如追逐或目标选择动作)

核心方法PlayAction()处理动作的添加和队列管理:

publicvoidPlayAction(refActionRequestDataaction){if(!action.ShouldQueue&&m_Queue.Count>0&&(m_Queue[0].Config.ActionInterruptible||m_Queue[0].Config.CanBeInterruptedBy(action.ActionID))){ClearActions(false);}varnewAction=ActionFactory.CreateActionFromData(refaction);m_Queue.Add(newAction);if(m_Queue.Count==1){StartAction();}}

6. 动作执行

动作执行由ServerActionPlayer管理,主要流程包括:

  1. 动作启动:调用
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 9:53:09

Netcode for GameObjects Boss Room 多人RPG战斗(20)

ConcreteActions 1. 动作类型与分类 ConcreteActions目录包含了游戏中所有具体的动作实现,这些动作可以分为以下几类: 动作类型 代表实现 核心特点 物理攻击 MeleeAction 基于物理检测的近战攻击,需要碰撞检测 投射物攻击 LaunchProjectileAction, ChargedLaunchProjectil…

作者头像 李华
网站建设 2026/7/7 17:36:33

企微scrm如何使用群发功能?

企微SCRM群发功能使用指南企微SCRM系统提供了强大的群发功能,可以帮助企业高效地管理和维护客户关系。以下是基于给定搜索结果的详细使用指南:1. 群发功能概述企微SCRM系统的群发功能允许企业向客户群发送统一的消息,这可以是产品更新、促销活…

作者头像 李华
网站建设 2026/7/7 7:26:09

Deepseek 持续迭代的模型

Deepseek 能在推理、编码、多语言处理等场景表现突出,核心源于其TransformerMoE 混合架构的创新设计,以及持续迭代的模型优化策略。​ 基础架构:TransformerMoE 的协同优势​ Transformer 架构:作为自然语言处理的基础框架&#x…

作者头像 李华
网站建设 2026/7/7 11:35:14

基于51单片机的智能锁设计与实现

基于51单片机的智能锁设计与实现 第一章 绪论 在智能家居与安防技术融合发展的背景下,传统机械锁存在钥匙易丢失、防盗性能弱、无法远程监控等弊端,难以满足现代家庭与办公场景的安全需求。51单片机凭借编程简洁、接口丰富、性价比突出的优势&#xff0c…

作者头像 李华
网站建设 2026/7/7 19:32:24

基于51单片机指纹密码锁系统

基于51单片机的指纹密码锁系统设计 第一章 绪论 在智能家居与安防需求升级的背景下,单一密码锁存在密码易泄露、遗忘的问题,纯指纹锁则可能因指纹磨损、潮湿导致识别失灵,传统机械锁的防盗短板更显突出。51单片机凭借编程简洁、接口兼容性强、…

作者头像 李华
网站建设 2026/7/6 20:33:45

西门子1500PLC在物流分拣线中的实践应用

西门子1500PLC某大型物流中心分拣线程序案例 由18个远程IO模块和39个ST40CPU组态,多种线体分拣程序,使用大华扫码枪扫码上传,程序采用SCL进行编程,程序注释齐全,逻辑清晰,可参考性较好。 V15版本打开 包含…

作者头像 李华