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

UE5 - 制作《塞尔达传说》中林克的技能 - 18 - 磁力抓取器

让我们继续《塞尔达传说》中林克技能的制作!!!
UE版本:5.6.0
VS版本:2022
本章节的核心目标:磁力抓取器
先让我们看一下完成后的效果:

18_磁力抓取器


大纲如下:

  1. 引言
  2. 功能架构与核心逻辑
  3. 物理材质与场景配置
  4. 代码实现:从识别到操控
  5. 操作说明

1.引言

  在《塞尔达传说》中,林克的磁力抓取器( magnesis )是极具特色的交互技能,可识别并操控金属物体。本文基于 UE5,从代码实现角度,详细拆解磁力抓取器核心逻辑,一起来复刻该玩法。


2.功能架构与核心逻辑

  磁力抓取器需实现金属物体识别状态可视化交互操控 三大核心能力,整体流程如下:

在这里插入图片描述


3.物理材质与场景配置

3.1 物理表面定义

  在 UE5 项目设置(Project Settings)→ 物理(Physics)中,将 SurfaceType1 命名为 Metal,作为金属材质的专属标识,为代码识别提供依据。
在这里插入图片描述

3.2 物理材质资产

  创建 PM_Metal 物理材质,配置摩擦力、恢复力等物理属性,并关联 SurfaceType1。同时,准备三类可视化材质(基于 M_Bomb 实例化 ):

材质名称作用BP_Player中蓝图配置
MI_MagHover磁力瞄准高亮显示MagHoveredMat
MI_MagNormal技能开启后默认显示MagNormalMat
M_Metal技能关闭 / 未激活时原始显示MagDeactivateMat

在蓝图细节面板 “Rune - Magnet” 中完成材质绑定,让不同交互状态自动切换对应材质。
在这里插入图片描述
在这里插入图片描述

3.3 场景应用

  完成 PM_Metal、PM_Foliage 等物理材质资产创建与属性设置后,还需将材质配置到场景物体上。
  以场景中的 Cube 为例,在关卡编辑器右侧细节面板中,找到 “材质” 模块下的 “元素 0”,点击材质选择框,将 M_Metal 材质配置给 Cube 。通过这样的操作,让 Cube 等场景物体具备对应的物理材质属性,成为磁力抓取器技能可识别与交互的目标对象,为后续代码中筛选金属材质 Actor 提供基础,使场景内物体能响应磁力抓取器的功能逻辑 。
请添加图片描述


4.代码实现:从识别到操控

4.1 角色类核心定义(ZSCharBase.h)

UCLASS()
class ZELDARSKILLS_API AZSCharBase : public ACharacter
{GENERATED_BODY()
public:// 磁力抓取器配置UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rune - Magnet")TSubclassOf<AActor> StaticMeshClass; // 筛选目标Actor类型UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rune - Magnet")UMaterialInterface* MagHoveredMat = nullptr; // 高亮材质UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rune - Magnet")UMaterialInterface* MagNormalMat = nullptr; // 技能开启材质UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rune - Magnet")UMaterialInterface* MagDeactivateMat = nullptr; // 技能关闭材质UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Rune - Magnet")UParticleSystem* MagDraggingVFX; // 拖拽特效// 运行时数据TArray<AStaticMeshActor*> AllMagSMs; // 存储金属ActorTObjectPtr<UPrimitiveComponent> MagnesisObj; // 当前抓取物体TObjectPtr<UPrimitiveComponent> TempMagHitComp; // 射线检测临时对象TObjectPtr<UParticleSystemComponent> BeamParticleComp; // 拖拽粒子特效// 核心方法#pragma region Magnetvoid FilterOutAllMagSMs(); // 筛选金属Actorvoid UpdateMagHintMats(TArray<AStaticMeshActor*> array, UPrimitiveComponent* hoverObj); // 材质切换void SelectOrReleaseMagObject(); // 抓取/释放逻辑void GrabMagObj()
http://www.dtcms.com/a/264271.html

相关文章:

  • 强化学习【chapter0】-学习路线图
  • Java Selenium反爬虫技术方案
  • 07 Springboot+netty+mqtt服务端实现【重构】
  • 数据结构之带头双向循环链表
  • 苍穹外卖系列问题之Day11_05营业额统计代码开发2 StringUtils.join(dateList,“,“)报错
  • Cross-modal Information Flow in Multimodal Large Language Models
  • 【1.6 漫画数据库设计实战 - 从零开始设计高性能数据库】
  • 2025年主流大厂Java后端面试题主题深度解析
  • 推客系统小程序终极指南:从0到1构建自动裂变增长引擎,实现业绩10倍增长!
  • 快速手搓一个MCP服务指南(九): FastMCP 服务器组合技术:构建模块化AI应用的终极方案
  • 【大模型学习 | BLIP2原理】
  • 「Java流程控制」for循环结构
  • langchain从入门到精通(三十二)——RAG优化策略(八)自查询检索器实现动态数据过滤
  • 腾讯 iOA 零信任产品:安全远程访问的革新者
  • Redis-渐进式遍历
  • Java后端调用外部接口标准流程详解
  • python+uniapp基于微信小程序的PS社区系统
  • 使用D435i运行ORB-SLAM3时,纯视觉模式与视觉-惯性模式的位姿矩阵定义问题探讨
  • 基于SpringBoot + HTML 的网上书店系统
  • 转录组分析流程(六):列线图
  • Kafka 生产者和消费者高级用法
  • c++学习(八、函数指针和线程)
  • EasyExcel实现Excel复杂格式导出:合并单元格与样式设置实战
  • web开发,旅游景点管理系统推荐算法版本demo,基于asp.net,mvc,c#,sql server
  • 编写shell脚本扫描工具,扫描服务器开放了哪些端口(再尝试用python编写一个)
  • Set和Map的解析与应用场景
  • OSPF虚拟链路术语一览:快速掌握网络路由
  • 【字符串方法】split使用介绍
  • Android NDK探索之旅(一)
  • 中心效应:多中心临床试验的关键考量