Skip to main content
 首页 » 资源教程 » UE4教程

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇

2016年09月03日 22:18:0823120

最近也是刚开始自学UE4,一开始使用UE4的时候,感觉它和UNITY差距还是比较大的。在没有任何编码的基础上,我居然能操作一个角色在场景里面跑来跑去,很是让我不解。为了研究它的这一部分代码是怎么实现的,我看了UE4官网上的教程----3rd Person Game with Blueprint。如果有其他人和我一样也是刚接触UE4并且想了解这一块的。推荐你们可以去看看官网上的教程。

官网的英文版地址如下:https://docs.unrealengine.com/latest/INT/Videos/    选择相应的教程就可以观看了。但是该英文版的视频要求翻墙。如果没有翻墙的话可以上Youku去看

优酷的英文版地址如下:http://i.youku.com/i/UMzE2NDk2OTIw

在这里额外多说一些,由于UE4在国内的资料不像UNITY那么齐全。所以如果需要查询资料的话最好还是翻个墙。另外,Youtube上有实时翻译功能,由于英文版是没有字幕的,所以如果能将口语翻译成英文字幕,那么看起来也是轻松非常多。由于文档教程不可能一步步都说的清楚,所以推荐大家还是可以先去学习学习官网的资料,如果有地方有疑惑的话来这里看看我是怎么解决的也可以。废话不多,下面开始进入正式的项目学习。

项目目标:创建一个第三人称视角,视野中有一个Actor,该Actor可以实现到处走动,跳跃,在待机,走动或者跳跃的过程中可以进行攻击实现连续出拳。

主要涉及到的模块:动画混合(Animation Blend),状态机(State Machine),动画蒙太奇(Animation Montage),还有一些蓝图(Blueprint)的知识。

主要步骤如下:

1.新建项目并导入资源。

2.设置响应事件(前后走,左右走,镜头上下左右移动,跳跃,攻击)

3.创建混合动画(Idle_walk_run)

4.创建人物的Animation_BP,设置好几个要进行的动作,并设定好彼此之间的转换关系,同时,编写事件图表

5.创建人物Character_BP,将响应事件和设定好的事件连接起来。到这一步位置就可以让人物在场景中跑来跑去并跳跃了,但是还不能一边移动一边攻击。

6.创建AnimationMontage_BP文件,实现动画的混合。

一  首先是创建项目并导入资源,这个不浪费时间多说了,直接导入就是了。

二  设定响应事件

人物前后移动:MoveForward

人物左右移动:MoveRight

镜头左右旋转:Turn

镜头上下旋转:LookUp

跳跃:Jump

效果图如下,这一块没什么好说的,就不要浪费时间了。

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第1张

当我们设定好了这些输入事件以后,我们就可以在角色的蓝图里面获得该事件啦。把按钮和事件绑定好了以后,那么我们的人物的基础移动也就完成了。

三   创建混合动画

在内容管理器中 右键->动画->混合空间1D(因为决定该动作融合的条件只有一个速度,所以用1D的就足够了)。文件命名为Idle_Walk_Run,然后双击打开。首先勾选屏幕正中间的这个按钮并添加X坐标轴标签为Speed

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第2张

将右边相应的动画文件拖动到左边的这个窗口中,就会生成那个小圈圈,将小圈圈在轴上移动,就可以决定在什么时候进行动作的混合。可以用鼠标在上面滑动,观察预览窗口的显示,这样子一个动作的混合就做完啦,是不是很简单?!

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第3张

四  创建人物Animation_BP

在内容管理器中 右键->动画->动画蓝图,命名为Aniamtion_BP,然后双击打开。新建一个状态机节点,并将该节点和最终动画姿势连接起来。

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第4张

进入之后的窗体应该是这样的:

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第5张

由于我们后续创建的MyCharacter_BP会是继承于UE4中自带的Character父类的,他已经拥有了跳跃,游泳,移动等功能,所以我们不必关心他是具体怎么跳跃的,我们只要能触发的跳跃行为就可以了。跳跃的行为会由其他蓝图来实现,这里我们要做的是动作的切换条件。新建一个变量IsInAir。该变量会在其他地方被设置好。然后传递到这里面来。

Idle_Walk_Run->JumpStart:当我们的人物开始离开地面了,就播放起跳动作。

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第6张

JumpStart->JumpLoop:如果起跳动作快结束了,那么开始进入循环播放跳跃过程中的动作

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第7张

JumpLoop->JumpEnd:和起跳开始类似,如果人物快要落到地面了,IsInAir = false,那么开始播放落地动作

JumpEnd->Idle_Walk_Run:落地动作结束后开始播放待机动作。

到这一步为止,我们已经创建了人物的状态机,其中包含了一个混合动作,3个跳跃动作。并设定好了他们之间的关系,那么接下来我们就要去设定什么按键对应什么样的事件,这样的事件怎么最终体现在对人物的操作上。那么接下来我们要去编写蓝图中的事件图表了,在这里只用关注蓝字上面的内容就可以了。

效果图如下:

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第8张

到这一步为止,我们已经能获取人物身上的状态,从而来为我们状态机中需要的变量赋值,当我们为这些变量赋值以后,那么状态机获得了这些参数的值,就可以做不同的动作了。那么还剩下一部,如何将按键和响应绑定起来呢?也就是说,我们现在知道了人物一旦走动起来,那么他就会有移动的动作,跳起来就会播放跳跃的几个动作,可是他们是怎么通过键盘去触发走动,跳跃这些行为的呢。那么接下来我们就要完成这一件事情了。

五  创建人物Character_BP,并编写其蓝图

内容管理器->右键->蓝图类 选择继承于Character,在蓝图编辑器中指定该Character的Mesh为我们第一步中导入来的资源,添加好SpringArm和CameraComponent等组件并设置好,类似组件的设置的不会再这里面讲,因为那些东西太多太繁琐,还是API文档靠谱,所以请自行查阅API文档。

这一步应该没有太多好说的,理解了

UE4示例项目学习:用Blueprint来创建一个可操作角色 基础操作篇 UE4教程 第9张

每个节点的作用就可以了。

到这一步为止,我们应该就已经创建了一个可以自由到处跑动的角色了,他还可以进行跳跃。鼠标可以进行镜头的旋转。需要将项目设置中的默认GameMode修改成我们创建项目的GameMode,同时将DefaultPawn改成我们创建的Character_BP,那么游戏开始的时候创建的救会是我们需要的那个角色了。下一步我们要实现动作上的混合,需要能边走边出拳,这个需要再下一篇文章再详细说,因为其篇幅也是比较多的,操作也比较麻烦。

我们可以对上述的所有操作进行一下总结:

1.我们需要创建一个角色,该角色继承于Character类,他有基础的一些功能,但是并不满足我们的要求,我们在其蓝图中去捕获我们设定好的键盘输入事件,并将其进行一定的计算或者转换,然后作为参数输入到其他的组件中,这些组件获取了这些参数以后,就会执行相应的操作。比如MoveMentComponent获得了方向的参数以后就会朝某个方向进行移动,CharacterController获得了角度以后就会对相机进行旋转。

2.我们需要创建一个动画蓝图,并将Character_BP中的动画蓝图指定为它,该动画蓝图包含了一个状态机,状态机中定义了若干个动作,以及动作之间切换的条件。动画蓝图的事件图表中,会每帧的去检测人物当前的状态,然后根据该状态去设定状态机中的条件,当状态机中捕获到了这一信息,那么就会进行相应的动作,比如播放动作等。

以跳跃为例子

我们设定了Space键对应跳跃这一个行为。那么在角色的蓝图中,当我们按下Space键时,就会触发人物的跳跃事件(因为我们继承于Character),跳跃将会使人物离开地面。那么在角色的动画蓝图中,我们每帧都会去检测人物是不是离开了地面,如果离开了地方那么就去设置IsInAir参数。所以当我们点击了Space按钮,会导致IsInAir参数为true,那么这个时候状态机就会发现满足了IsInAir为true的这一个条件,那么他就开始播放这一个动作了。这就是这一整套的一个逻辑。

最后再说两句

这篇教程其实严格的来说也不叫做教程,因为如果你一路顺着做下来的话估计肯定是做不出来的。以为里面有很多参数的设置无法一一说明,写博文只是为了记录一个大概的思路,帮助大家理解这一整台状态机和角色之间是怎么进行协作的。如果想要做出项目来,我还是强烈建议去看UE4的官网视频,同时还是推一下GOOGLE的搜索,谁用谁知道。翻个墙很简单,付费也就100+一年。快速的学习东西远比这100来块重要的太多了。


评论列表暂无评论
发表评论