当前位置: 首页 > news >正文

第四章:实现交互 - 点击击打与分数反馈

本章概述

在第三章中,我们创建了游戏的"大脑"——GameMode,现在我们需要为玩家提供"手脚"——交互能力。本章将实现玩家输入和击打交互系统,让玩家能够真正击打地鼠并获得实时反馈。

本章学习目标:

  • 学习设置UE5输入系统
  • 掌握射线检测(Raycast)原理和应用
  • 实现精确的击中检测逻辑
  • 完成GameMode与地鼠间的击中通信

4.1 理解玩家输入系统

在UE5中,玩家输入通过输入操作(Input Action)输入映射上下文(Input Mapping Context) 来管理。这种架构让我们能够灵 活定义各种输入方式。

输入系统核心概念:

  • 输入操作:定义抽象的交互动作(如"击打")
  • 映射上下文:将具体输入设备(鼠标、键盘)映射到输入操作
  • 输入处理流程:硬件输入 → 映射上下文 → 输入操作 → 游戏逻辑

4.2 设置输入系统

步骤1:创建输入操作(Input Action)

  1. 创建输入操作资源
    - 在内容浏览器中右键 → 输入 → 输入操作
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dd28f89d5668497fa4eb8e798f63acfc.png)- 命名为IA_LeftMouseClick
    - 值类型选择"布尔型"(Boolean)
    

在这里插入图片描述

  1. 创建输入映射上下文(Input Mapping Context)
    - 右键 → 输入 → 输入映射情景
    - 命名为IMC_WhacAMole
    

在这里插入图片描述

  1. 配置输入映射
    打开IMC_WhacAMole,在映射栏中添加IA_LeftMouseClick
    添加触发器:鼠标左键(Left Mouse Button)
    

在这里插入图片描述

步骤2:设置PlayerController输入

  1. 创建BP_PlayerController
    • 在Blueprints文件夹中 右键 → 蓝图类 → 玩家控制器
    • 命名为BP_PlayerController
    • 修改BP_WhacAMoleGameMode中的玩家控制类
      在这里插入图片描述
    • 打开BP_PlayerController添加如下逻辑
    在事件BeginPlay中:
    → 获取PlayerController
    → 添加映射上下文(Add Mapping Context)
    

在这里插入图片描述

4.3 实现射线检测(Raycast)击打系统

步骤3:理解射线检测原理

射线检测是检测鼠标是否击中3D物体的核心技术。其工作原理是:从摄像机位置发射一条不可见的"激光",检测与场景中物体的碰撞点。

打地鼠游戏中的射线检测流程:

  1. 获取鼠标点击的屏幕位置
  2. 将屏幕坐标转换为3D世界空间的射线
  3. 检测射线与地鼠碰撞体的交点
  4. 判断击中的是否是活跃的地鼠

步骤4:在PlayerController中实现射线检测

  1. 创建鼠标点击事件处理

    在PlayerController蓝图:
    - 添加IA_LeftMouseClick事件
    - 在事件中调用射线检测函数
    
  2. 设置Mouse的碰撞

    • 双击打开Mouse的静态网格体
    • 修改碰撞复杂度
      在这里插入图片描述

步骤5:详细的射线检测实现

关键蓝图节点配置:

获取玩家控制器 → 获取鼠标位置 → 消除到世界的变换
→ LineTraceByChannel(射线检测) → 分支判断是否击中
→ 如果击中:获取击中的Actor → 类型转换为BP_Mole
→ 如果转换成功:获取bIsActive变量 → 如果为True:调用地鼠的OnHit事件

射线检测参数设置:

  • 碰撞通道:使用Visibility或自定义碰撞通道
  • 检测距离:1000-5000单位(根据场景大小调整)
    在这里插入图片描述

4.4 实现击中反馈系统

步骤6:完善地鼠的OnHit事件

  1. 修改BP_Mole的OnHit事件
    OnHit事件完整逻辑:
    - 检查bIsActive,如果为True:设置bIsActive为False调用GameMode的AddScore函数调用Hide事件(立即隐藏地鼠)
    - 否则:忽略此次击中
    

在这里插入图片描述

4.5 调试和优化

步骤7:添加调试功能

添加调试信息输出

关键位置添加Print String:
- 射线检测开始:"检测鼠标点击"
- 击中地鼠:"击中地鼠!分数+X"
- 未击中:"未击中目标"

步骤8:性能优化考虑

  1. 优化射线检测频率

    避免每帧检测,只在点击时检测
    使用对象池管理特效实例
    优化碰撞体复杂度
    
  2. 输入处理优化

    使用输入操作的Started事件而非持续检测
    添加点击冷却时间(避免连点作弊)
    移动平台适配(触摸输入)
    

4.6 完整系统集成测试

步骤9:全面测试交互系统

  1. 功能测试清单

    ✅ 鼠标点击触发射线检测
    ✅ 击中活跃地鼠:加分+隐藏地鼠
    ✅ 击中非活跃地鼠:无反应
    ✅ 未击中任何物体:无反应
    ✅ 分数系统正确累加
    
  2. 边界情况测试

    - 快速连续点击测试
    - 多地鼠同时存在时的击中精度
    - 游戏结束后的输入屏蔽
    - 不同屏幕分辨率下的点击准确性
    

4.7 常见问题解决方案

问题1:射线检测无法击中地鼠

  • 检查地鼠碰撞体设置和碰撞通道匹配
  • 确认射线检测距离足够长
  • 检查地鼠的碰撞体是否与视觉模型匹配

问题2:点击响应延迟

  • 优化射线检测的执行频率
  • 检查动画播放是否阻塞主线程
  • 验证输入映射上下文优先级

问题3:多人游戏适配

  • 确保射线检测在客户端和服务端同步
  • 使用授权RPC调用处理分数修改

问题4:移动平台适配

  • 将鼠标点击替换为触摸输入
  • 调整射线检测的起始位置逻辑

4.8 本章完整蓝图结构

PlayerController关键逻辑:

事件输入操作已触发:
在这里插入图片描述

地鼠OnHit事件:

在这里插入图片描述

4.9 本章总结

已完成的核心功能:

  • ✅ 配置了完整的输入处理系统
  • ✅ 实现了精确的射线检测击中检测
  • ✅ 建立了地鼠击中反馈机制
  • ✅ 完成了分数系统的实时更新

技术要点回顾:

  • 射线检测是3D交互的核心技术
  • 输入映射上下文让输入管理更加灵活
  • 调试可视化是开发过程中的重要工具

4.10 下一步预览

在第五章中,我们将:

  • 创建完整的UMG用户界面系统
  • 实现游戏内HUD(分数、时间显示)
  • 制作开始菜单和结束界面
  • 学习数据绑定和UI动画

作业:

  1. 测试击中检测的准确性,调整碰撞体大小
  2. 尝试不同的击中特效,找到最适合的视觉效果
  3. 优化射线检测性能,确保在各种情况下流畅运行

当前项目状态:
现在你的打地鼠游戏已经具备了完整的交互能力!玩家可以点击击打地鼠,获得实时分数反馈,游戏体验基本成型。

在下一章中,我们将为游戏添加精美的用户界面,让游戏信息显示更加专业和美观。

如果在实现过程中遇到任何射线检测或输入处理的问题,欢迎在评论区讨论具体现象,我们会一起找到解决方案!

http://www.dtcms.com/a/565963.html

相关文章:

  • 大模型应用开发与私有化部署
  • 用什么做网站比较好下载河北公众号官方版安装
  • 网站备案被注销 2016宁夏制作网站公司
  • 部门网站建设的目的和意义郑州公司企业网站建设
  • HIV传播模型:整数阶和分数阶
  • synchronized
  • 注册安全工程师考试题库免费发seo外链平台
  • [LitCTF 2023]作业管理系统
  • 重庆网网站建设公司seo营销是什么意思
  • RabbitMQ:仲裁队列 HAProxy
  • 推荐个在广州做网站的做的网站需要什么技术支持
  • 通用测试代码结构规范 - Cursor Rules
  • 软件测试基础
  • 厦门网站推广步骤机构网站建设什么原因最主要
  • 网站建设周期与进度安排神木网站设计公司
  • 单网卡同时上内外网设置
  • openwrt 做视频网站怎么在wordpress导航条下方加入文字广告链接
  • 简述营销型企业网站建设的内容建立个公司网站
  • 【深度学习入门】小土堆-学习笔记
  • 黑龙江省建设局网站辽宁建设工程信息网怎么无法登陆了
  • 好文与笔记分享 A Survey of Context Engineering for Large Language Models(下)
  • 【大模型】多模态大语言模型(MLLMs):架构演进、能力评估与应用拓展的全面解析
  • 跟der包学习java_day8「继承(Inheritance)」
  • 移动+协作+视觉:开箱即用的下一代复合机器人如何重塑智能工厂
  • C语言应用实例:斐波那契数列与其其他应用
  • 计网5.3.6 TCP拥塞控制
  • 模数转换器主要类型有哪些
  • 先到先得!深度学习有限元仿真!
  • 短信登录和登录校验(线程安全、ThreadLocal、进程调度)
  • 旅游网站html快速网站收录