• UE5笔记【十】第一个蓝图项目:bluePrint。


    我们将上升的斜坡或者楼梯隐藏,往下移动,使其隐藏在地面以下。然后将方块也向下移动,漏出一点来。我们要模拟的场景是:当人移动到蓝色方块上时,踩在方块上,上升的楼梯升起来。然后人可以上楼。

    将蓝色方块右键【浏览至资产】

     物体是一个静态网格。为此,为了实现操作。我们选择到【蓝图类】中,选择将其转换为蓝图类。

     并将其命名为BP_GroundTriggerCube。点击【选择】。打开蓝图编辑界面,才是方块,已经成为了一个蓝图。

     我们在盒体上面添加一个Box,如果这个Box被碰撞,那么代表有东西在盒体上。此时,触发楼梯上升事件。 

     我们给这个Box绑定事件:

     进入到事件图表中:

     事件图表

     首先我们需要等待,直到我们的玩家踩到立方体上。我们需要一个第三者作为观察者。当事件发生时,触发响应通知接受者。

     Cast to遵循【里氏转换法】。用第三人称的角色观察重叠的发生。

    在这个例子中,我们就是检测是否有东西返回值为真True。

    相当于甲方找来了一个监视者,这个监视者为甲方观察是否有第三人发生某件事,如果发生了,监视者返回一个True,否则返回False。这么做是为了确保与立方体交互的物体是第三个。

     如果事件发生了,需要做什么呢,我们希望盒体可以下降:从某一个高度值,降低到另外一个高度值。我们需要一个叫做:移动组件的节点:Move Component to。

    他可以随着时间的推移,而发生某些改变。盒体可以慢慢下落,而不是直接跳闪。这样有个动画的过程。

     要使用这个节点,首先我们需要知道盒体当前的位置。然后将其位置值减去20个单位。从-80,减到-100作为盒体新的位置。

     为了做到这点(获取当前盒体的位置),我们把盒体拖入到编辑区,作为一个节点,获取其Z轴高度值。

    有个操作细节:如果我们直接右键输入:Get relative location是搜不到这个节点的,这个节点,必须是先从节点中引连接线出来,然后再输入。否则搜不到。、

    操作:鼠标按住左键选中引出节点,松开手,然后输入。

    因为我们实际操作的是Z轴,所以我们需要将这个向量值分解成X,Y,Z。鼠标右键:如下图:【分解结构体引脚】

     基于此向量,我们要新建一个向量。作为新位置。

    我们搜索结点: 【make vector】。

     这个新节点代表的位置:X和Y值,可以直接连接,但是Z值,需要做减法。所以我们需要在两个节点之间增加一个减法节点。搜索【subs

     此时新位置产生了,需要将位置给移动组件MoveComponent to节点。连接到其Target Relative Location上,然后将监视者结果反馈给移动组件。最后,需要选择移动组件需要移动的对象。我们将我们的盒体重新拖出来。移动的就是这个盒体。

    此时点击编译,保存,进入游戏中尝试一下。

     如果你的没有下降,请查看:你是否将其设置为【可移动】

     当你实际成功之后,你会发现一个新问题:盒体,接触下沉之后,当人离开之后,盒体没有再升起来。我们需要盒体升起来。此时需要对盒体引入一个新的事件。【组件结束重叠时】

     我们查看移动组件的返回值:

     我们需要把这个节点复制到下面,这样他就会寻找另一个actor对象。

    让我们重新触发事件,再次引入一个第三者角色,然后将这个第三者角色返回值给移动组件的返回值。意思为:当重叠事件结束时,触发移动组件返回原位(停在原位)。

    让我们再次编辑,然后保存,进入游戏尝试。

    有一个新问题,我们每次过去踩一下,盒体都要下降,所以,我们需要设置一个阈值。如果盒体到达之后,就不要无限下降。

    此外,我们还可以在蓝图中,设置:如果位置达到一定阈值。启动某个动作。需要Branch节点。类似于编程语言中的If-else。操作。

     我们假定,只有当盒体位置大于-80时,盒体才下降,所以,我们还需要一个比较运算符(节点。)。

    连线如下;

     为了实现斜坡或者楼梯的升高。我们需要在组件中,新建一个新的网格体。 我们返回【视口】中。【添加】【静态网格体组件】

     这个网格实例我们起名为:Stairs。然后找到Stairs或者Linear_stairs。 

    最后将这个实例,添加到游戏中。

    此时需要两个界面互动,我们在视口中变换这个Stairs组件,在游戏界面中,其也相应改变。

    此时我们留意,楼梯最后的位置高度是80。我们将其移动到地面以下,然后等事件触发,然后升起。此时高度为-30.上升110高度。此时,转入到蓝图【事件图表】中。

    此时需要一个新的【移动组件结点2】【move componet to】

     然后我们拖动Stair,作为移动组件结点中的组件。

    然后获取组件的位置。并将其分解为xyz。然后传递给移动组件结点2。

     此时目标位置:高度80.

     搞定了。

     

  • 相关阅读:
    算法入门之数组简介
    采访从不写代码注释的高手,他是真的牛呀
    正则表达式匹配双引号
    springboot采用协同过滤算法的家政服务平台的设计与实现毕业设计源码260839
    pandas笔记:显示中间的省略号
    Mysql的逻辑架构、存储引擎
    5)自适应滤波(二)[RLS算法]
    你真的了解黑客吗?
    Java SOAP 调用 C# 的WebService
    A-LEVEL Chemistry考点分析
  • 原文地址:https://blog.csdn.net/xiaoyaolangwj/article/details/128052281