2024-10-16
Unreal Engine
00

目录

Interface
Line Trace by Channel
构建互动系统
增强输入系统
配置Interface
配置增强输入系统
总结

虚幻引擎的互动系统构建实例,允许人物和场景中的Actor交互。

交互的思路很简单:按下互动按键,判定有没有物体能够互动,判定此物体可不可以互动,开始互动!

Interface

接口是虚幻中非常重要的操作。你可以将它理解成类似于面向对象编程里的类,或者更简单地将其理解为utils。它被触发时就会调用对应的接口函数,这对代码复用非常有用。

Line Trace by Channel

Line Trace by Channel是一个非常有意思的特性,它接受起点、终点的坐标,然后进行判定:

  • 如果起点到终点的连线上有Actor,那么就将它记录下来甚至返回过来。

假设,我按下互动按钮之后,从我眼睛里射出一道线,到我面前一定范围,如果有物体可以互动,那么就会被这道线击中,我就可以处理它了。

构建互动系统

增强输入系统

正如我之前所述,增强输入系统是我们使用controller控制游戏的根基。我在这里不再赘述配置的具体方法,将你喜欢的互动键配置上去即可。我的对应的输入动作的名字为BP_InputInteraction,触发类型是“已按下”。

配置Interface

创建了一个新的蓝图,将其命名为BPI_InteractInterface。点开后将其内部的新函数重命名为interact。值得注意的是,你可以在这里直接定义interact函数的行为,也可以什么都不做,在你调用这个接口的时候写,这样可以定制每一个蓝图的互动内容。根据需要书写即可,当然也可以写多个函数,按需调用。

创建了一个新的蓝图,将其命名为BPSM_Table。打开后,添加静态网格体(Static Mesh)并给了一张桌子。在这个蓝图的上方,点击“类设置”,在右边的“已实现的接口”中添加BPI_InteractInterface。

这样,在BPSM_Table蓝图内部,我们就可以通过event调用接口中的interact函数:

image.png

这代表它在接口被调用的时候(即互动时),会打印出对应的字符串。

配置增强输入系统

在Character的蓝图中,我们可以使用Line Trace by Channel调用接口。在调用之前,我们需要先对命中的actor进行检查:它是否具有我们的接口?如果有,那么进行接口的调用。

image.png

可以注意到,Line Trace Start和End是被包裹起来的。

  • 起点:摄像机当前的位置,
  • 终点:摄像机当前的位置 + 摄像机面向方向的向量(是长度为1的单位向量) * 判定范围(Line的长度)

image.png

image.png

总结

至此,我们可以对任何装配了interaction接口的物品进行互动,对其按E可以让屏幕中打印出对应的字符串。我们将这个动作替换为其他的内容,就可以完成对场景物品的互动。

本文作者:Jeff Wu

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!