[UE5]背包页面实时显示角色方法(纯蓝图)

前言

写这篇文章是因为之前在做背包系统时,在实时显示角色这一部分的时候一直有些问题,B站和优快云都没有找到很好的方法,刚好最近把问题都解决了,接下来就分享一下我的方法。


一、方法一

1.过程

首先打开角色蓝图,给角色的碰撞体添加SpringArm,并在SpringArm下面挂一个SceneCaptureComponent2D,调整SpringArm的Transform

接着在SceneCaptureComponent2D的Detail面板里找到SceneCapture,在TextureTarget里创建RenderTarget

接着从RenderTarget创建材质,把MaterialDomain改为UI,BlendMode改为Masked,把RenderTarget的Alpha通道用1-X使得只显示物体

UI部分不再赘述,把材质赋给Brush的Image即可

蓝图部分:

创建UI并显示后,用以下节点使得背包页面只显示角色

2.问题

此时便出现了一个问题,便是在摄像机旋转的时候,如果角色蓝图关闭了UseControllerRotationYaw的话,角色虽然不跟着摄像机旋转,但角色的碰撞体会,因此,如果玩家在角色的不同角度打开背包的话,背包显示的角色也会显示不同的角度,不能固定在正面,因此,我们需要在角色的动画蓝图中获取根节点的旋转,同时获得控制器的旋转,获取他们的差异,并在打开背包的时候设给角色,让角色保持在正面

3.解决方案

在项目GameAnimationSample里有详细的获取RootTransform的流程,参考下图(不同项目原理相同)

在角色蓝图里获取动画的实例(GetAnimInstance),Cast成我们自己的动画蓝图,并获取Root的Rotation信息,接着获取控制器,接着获取控制器的旋转(GetControlRotation),分割结构体引脚,只提取Yaw的信息,接着Delta,(Z轴加180度只是为了让角色保持在正面),把旋转信息设给角色

同时,在关闭背包的时候需要把旋转信息设回给角色

此方法缺点明显,一方面受到角色所处环境光照的影响,另一方面很难进行自定义化控制等等,所以游戏一般都会在地图的其他地方创建一个专门实时显示角色UI的场景,就是方法二。

二、方法二

此方法与方法一大同小异,且自由度较高,原理过程比较简单,我大致讲一下大体过程就好,不再赘述。

1.过程

同样创建场景捕获组件,但重新创建在Actor里或者在后面的角色蓝图里创建都行,同样创建RenderTarget,同样创建材质。在地图里摆放一个场景,给上光照,创建一个角色(子蓝图等),把角色放进场景里,并把角色的信息同步给这个UI角色。同样把材质赋给UI,(想显示或者不想显示这个场景都行,不想显示就像方法一一样提取Alpha信息),记得不要让玩家控制器影响到这个UI角色就行,这样玩家打开背包就能固定看见角色的正面(想看别的地方也行)。

三、总结

以上就是背包页面实时显示角色的两种方法,如果有其他的方法也可以评论告诉我。

好的,以下是一个基本的UE5背包系统蓝图实现: 首先,我们需要创建一个名为"BP_Inventory"的蓝图类。在这个蓝图中,我们需要添加两个变量:一个整型变量用于记录当前物品数量,一个数组变量用于存储所有物品。 接着,我们需要添加一些函数来实现背包系统的基本功能。下面是一些常见的函数: 1. "AddItem"函数,用于将新的物品添加背包中。这个函数需要一个物品对象作为参数,然后将其添加到物品数组中,并且增加物品数量计数器。 2. "RemoveItem"函数,用于从背包中移除指定的物品。这个函数需要一个物品对象作为参数,然后将其从物品数组中删除,并且减少物品数量计数器。 3. "UseItem"函数,用于使用背包中的物品。这个函数需要一个物品对象作为参数,并且根据不同的物品类型执行不同的操作。比如,如果是一个治疗药品,那么就会增加玩家的生命值。 4. "GetItem"函数,用于获取背包中指定物品的数量。这个函数需要一个物品对象作为参数,并且需要遍历整个物品数组来查找指定物品的数量。 以上是基本的背包系统函数,我们可以根据需要添加更多的函数来实现更复杂的功能。 最后,我们需要在蓝图添加一些事件来触发这些函数。比如,当玩家从地图上拾取一个物品时,就会触发"AddItem"函数;当玩家从背包中选择一个物品并点击使用按钮时,就会触发"UseItem"函数。 这样,我们就完成了UE5背包系统蓝图的基本实现。当然,这只是一个简单的示例,实际的背包系统可能会更加复杂。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值