前言

  这次是第二部入门教程,这一部教程完整讲解了一个入门级项目的完整制作流程,非常有用。
  我跟着教程的步骤做了完整的流程,感觉受益匪浅,非常推荐。

【UE4】虚幻引擎完全入门教程

  另外教程将基础教学和案例教学完全分开,并且标注好名称非常好。第一遍看的时候可以先过一遍基础,顺带看看案例的操作。
  第二遍就可以直接看案例跟着操作制作自己的案例了。

自制Demo

  下面就重点分析教程的案例制作

创建天空

  天空其实 UE4 有内置蓝图,可以创建出带有动态云的天空。
  官方的天空蓝图是开源可编辑的,有机会可以分析一波这里面的逻辑。
  将平行光添加到 蓝图天空 就可以了。

设置

  在项目设置可以设置当前项目使用的默认的地图,这样打开项目的时候就可以自动加载对应的 Level

创建地图

  其实这一步操作完全发挥自己的想象空间做地图就可以了。
  材质贴图都可以借用初学者素材里面的内容

地图

创建机关动画

机关动画

  这个圆盘的运动动画是通过关键帧实现的。

机关动画

  首先需要创建一个 static mesh component 的类,在类当中设置圆盘的大小。

机关动画

  构建动画蓝图,设置两个变量。

  • initialPlatformLocation 记录初始位置
  • startWithUpwardMovement 记录运动是往上走还是往下走

机关动画

  在游戏运行开始时记录当前物体的位置到变量中。

机关动画

  通过 timeline 节点可以创建动画曲线
  动画曲线的编辑类似于 Maya 之类的DCC软件,这里将三维的数值限制到 Unreal 上下朝向的 Z 轴上了。
  通过 timeline 可以输出 Z 轴上下变化的数值。

机关动画

  通过外部可编辑变量 startWithUpwardMovement 来判断圆盘往上走还是往下走。
  通过 vector + vector 节点完成上下向量变化的计算。

机关动画

  如此实现了这个平台机关来回上下运动的效果。

火球运动

  根据上面的效果,教程如法炮制,也给火球添加关键帧动画实现运动。

火球运动

  但是我觉得这样运动非常不方便,教程是卡准了所有地图的位置,所以很清楚动画曲线应该设置运动多少的距离。
  但是我自己做的地图并没有这么精确,因此我想到了之前 Unity 开发的时候填入向量自动完成过渡计算的方法。
  借助 vector 的 interpolate 插值运算就可以算出从初始位置到结束位置的运动。

火球运动

  首先还是的创建一个 static mesh component 然后添加 shape_shpere
  另外还需要添加一个 fire 特效,这个燃烧效果也是初学者内容里面有的

火球运动

  构建蓝图,需要先声明一些需要的变量

  • initialLocation 记录初始位置
  • tmpLocation 临时记录位置,用于交换变量数据
  • targetLocation 记录目标位置
  • moveSpeed 移动速度
  • closeThersold 接近阈值

火球运动

  首先游戏开始的时候记录当前物体的位置到 initialLocation 变量中
  targetLocation 的数值则是在外部输入进来的
  通过 VInterp To 节点可以计算出两个向量的过渡值。

火球运动

  后续就是判断当前位置是否到达目标位置
  如果到达目标位置则交换初始位置和目标位置实现往返效果

火球运动

  这样我就可以设置小球的初始位置和目标位置实现循环往复的运动。
  这样我设置这里的小球就方便了很多很多。

创建旋转门

  其实门的旋转和上面的操作是一样的,教程依旧采用曲线动画的制作方式。
  而我只是修改为旋转插值的实现。

旋转门

  教程是一步一步完善效果的,比较符合实际,我这里已经是最终效果了
  添加了碰撞器,可以实现靠近触发的操作。

旋转门

  开门的逻辑基本上和上面的火球运动一致。
  就是加了按F触发数值调换,可以实现按F开门或者关门。
  另外输入触发由碰撞体实现,如果没有碰撞则无法按F键开门
  这个实现逻辑和我之前Unity使用光线距离触发的方案不太一样,不过异曲同工。

旋转门

  靠近碰撞器则会判断是否将得分点全部获取完成
  如果获取完成就开启 F 键开门,如果没有完成就设置屏幕信息

创建可运动的角色

按键

  这里需要按照教程的按键设置去操作。
  虽然这个设置有点繁琐,但是比起 Unity 要自己去算鼠标移动的位置真的简单了很多。
  当然可以学习的东西也少了很多(:з」∠)

角色

  创建第一人称控制器还需要将 GameMode 和 Controller 创建出来。

角色

角色

  首先获取当前角色的存储到变量中

角色

  这里的input都是来源于一开始设置里面设定的按键,名称也是对应的。
  如此以来可以直接获取到输入的值设置到角色对应的控制上。

角色

  移动角色也是一样的。

角色

  按 P 键输入的时候使游戏暂停,显示暂停界面。
  基本上 Controller 都是处理输入相关的操作。

角色

  而 Character 里面则包含了很多全局的变量,各种面板的显示等等。

Orb 得分点

得分点

  得分点也属于 static mesh component ,只需要设置碰撞效果触发即可。
  蓝图就可以设置碰撞触发之后给角色的分数自增1并且设置显示变量使屏幕泛蓝色。
  最后就是销毁自己了。

HUD 窗口UI构建

  其实这里面还是比较复杂的,不过我接触过 PyQt 的组件开发,有很多概念都是相似的,也没有多少特殊的东西。
  这次总算明白什么是 HUD 了,没想到全称就是 HeadUpDisplay

HUD

  最后只要将组件的相关属性和变量关联就可以实现UI的动态变化了。

总结

  教程还有一步关于声音合成的,我暂时忽略掉了。

  这个教程让我进一步更加全面地了解了 Unreal 这个软件。
  而且对蓝图编程有了非常友好的使用感觉。
  我特别认同这个教程提供的案例,非常简单,但是又可以涉及到 Unreal 制作游戏的方方面面。
  我觉得新人学 Unreal 这个教程真的很值得推荐