虚幻引擎的互动系统构建实例,允许人物和场景中的Actor交互。
交互的思路很简单:按下互动按键,判定有没有物体能够互动,判定此物体可不可以互动,开始互动!
接口是虚幻中非常重要的操作。你可以将它理解成类似于面向对象编程里的类,或者更简单地将其理解为utils。它被触发时就会调用对应的接口函数,这对代码复用非常有用。
Line Trace by Channel是一个非常有意思的特性,它接受起点、终点的坐标,然后进行判定:
假设,我按下互动按钮之后,从我眼睛里射出一道线,到我面前一定范围,如果有物体可以互动,那么就会被这道线击中,我就可以处理它了。
正如我之前所述,增强输入系统是我们使用controller控制游戏的根基。我在这里不再赘述配置的具体方法,将你喜欢的互动键配置上去即可。我的对应的输入动作的名字为BP_InputInteraction
,触发类型是“已按下”。
创建了一个新的蓝图,将其命名为BPI_InteractInterface
。点开后将其内部的新函数重命名为interact
。值得注意的是,你可以在这里直接定义interact函数的行为,也可以什么都不做,在你调用这个接口的时候写,这样可以定制每一个蓝图的互动内容。根据需要书写即可,当然也可以写多个函数,按需调用。
创建了一个新的蓝图,将其命名为BPSM_Table
。打开后,添加静态网格体(Static Mesh)并给了一张桌子。在这个蓝图的上方,点击“类设置”,在右边的“已实现的接口”中添加BPI_InteractInterface。
这样,在BPSM_Table蓝图内部,我们就可以通过event调用接口中的interact函数:
这代表它在接口被调用的时候(即互动时),会打印出对应的字符串。
在Character的蓝图中,我们可以使用Line Trace by Channel调用接口。在调用之前,我们需要先对命中的actor进行检查:它是否具有我们的接口?如果有,那么进行接口的调用。
可以注意到,Line Trace Start和End是被包裹起来的。
至此,我们可以对任何装配了interaction接口的物品进行互动,对其按E可以让屏幕中打印出对应的字符串。我们将这个动作替换为其他的内容,就可以完成对场景物品的互动。
本文作者:Jeff Wu
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!