NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包

在这个教程中,我们将学习如何使用虚幻引擎4,实现角色与一扇门的简单交互和动画表现。教程将涵盖以下内容:

  • 创建门的蓝图
  • 添加交互界面
  • 向门蓝图添加接口
  • 实现事件
  • 向门网格添加碰撞
  • 创建自定义角色和游戏模式
  • 添加交互按钮
  • 实现角色与门的交互
  • 为门添加动画

1、创建项目

我们将从一个简单的虚幻3D项目开始,别忘了在开始时包含 starter content

接下来,我们将从场景中删除所有不必要的对象:

现在我们准备实现新功能了!🎉

2、创建门的蓝图

我们将使用Starter Content中的门,它将由SM_DoorSM_DoorFrame组成:

现在,我们需要使用 一个Blueprint Class 来组合这些对象, 创建一个:

从菜单中选择Actor Class

应该看到如下内容:

在编辑器中双击DB_Door图标打开该蓝图:

单击添加组件,然后从下拉菜单中选择添加Scene

结果应如下所示:

现在,我们需要选择静态网格体并将它们附着(attach)到组件上。我们将从SM_Door开始:

现在选择SM_DoorFrame

应该得到:

现在,将DoorRootMobility 更改为Static

Box Collision组件添加到DoorRoot

...并调整碰撞道具(大致如图所示)。

当我们的角色与之碰撞时,这个区域将触发一个动作。

保存工作并返回到主项目窗口。

3、添加交互界面

在我们添加交互逻辑之前,将在开始时以适当的方式进行(不是简单的解决方案,而是正确的解决方案)。简单来说:如果我们的对象是可交互的(实现Interactable接口)——那就做点什么。让我们开始吧...

添加Blueprint Interface

将其命名为BPi_Interactable

在编辑器中打开接口文件:

InputsInteractor类型更改为Actor

并重命名NewFunction_0Interaction,不要忘记编译

4、向门蓝图添加接口

现在,我们需要打开BP_Door文件并单击"Class Setting"。Interfaces选项卡中添加我们新创建的BPi_Interactable接口:

我们将看到接口已更新:

接下来,我们需要实现一个事件。右键单击Interfaces → Interaction图标,然后单击Implement event

5、实现事件

单击Implement event-将打开事件图:

变量选项卡中,单击"+ Variable"并添加一个新的布尔变量isClosed

...并使其可编辑

现在,只需将其拖放到"事件图表"窗口中即可:

我们需要一个对门的引用,所以只需将"门"静态网格拖放到事件图中

创建一个从门到SetRelativeRotation的链接,这将允许门"打开":

最终结果应如下所示:

6、向门网格添加碰撞

在使用Starter Content中的门之前,我们需要添加碰撞,否则我们的角色将穿过那扇门。

要了解有关碰撞的更多信息,你可以在此处查看。

双击SM_Door

这个教程不是关于碰撞的,因此我们将使用一个简单的解决方案。单击CollisionAdd 26DOP Simplified Collision:

完成该操作后,您将在门上看到一个新的碰撞网格,该碰撞网格将成为某种障碍物:

7、创建自定义角色和游戏模式

现在需要修改角色和游戏模式。我们将扩展现有功能,而不是更新现有的默认实现:

在你的/Blueprints文件夹中,从ThirdPersonCharacterThirdPersonGameMode创建新的Child Blueprint Class(右键单击它们并选择Crete Child Blueprint Class菜单项):

打开CustomGameMode并更改Default Pawn Class值,从ThirdPersonCharacter 更改为CustomCharacter(不要忘记编译):

打开项目设置...


...将Default GameMode Default Pawn Class更改为我们的自定义模式和角色:

接下来,在World Outliner更改关卡的字符。可以删除旧的并放置一个新的:

Auto Possess Player更改为Player 0

8、添加交互按钮

对于我们的"交互",需要指定一个"交互"按钮,现在来实现这个功能。打开Project Settings

并添加F键作为交互按钮:

9、实现交互

双击CustomCharacter蓝图并添加Interact操作,我们将从此处开始:

最终代码应如下所示:

Capsule从哪里来的?不用担心,只需从当前CustomCharacter拖放CapsuleComponent

10、为门添加动画

为简单起见,我已将蓝图移至 /Blueprint 文件夹。这不是必需的,所以不用担心😉

在编辑器中打开BP_Door并添加Timeline节点:

打开然后单击Add Float Track图标:

添加一个关键点...

...值为 0 和 0:

第二个关键点的值为 1 和 1:

选择这两个点,然后右键单击并选择Auto键插值,这将使我们的动画更加"自然":

将长度更改为 1:

添加关键点后的结果蓝图应如下所示:

注意:我们需要将 1 乘以角度值,以便动画从零变为 1。


原文链接:Unreal Engine. Character Interaction With an Object and Animation

BimAnt翻译整理,转载请标明出处