用虚幻4蓝图制作FPS

将资源从一个工程拷贝到另一个工程

让所有打开的窗口都以标签显示

在编译完成后的时候自动保存

点击Play开始游戏的时候,获取鼠标控制

创建一个character蓝图类

创建后赋予模型

将character蓝图类,作为play时的视角

新建一个animation蓝图类

1.创建蓝图时,选择动画蓝图使用的骨骼。


2.然后再选择对应的骨骼动画

将animation蓝图动作给到character蓝图

添加按键映射

为了让角色可以根据按键移动,需要添加按键映射。



x值是-1,代表按w键移动的方向。(红色节点搜MoveForward)

这里可以添加s,设置一个相反的值。


什么是向量

一组有序数字。

这里用向量来表示一个坐标,[2, 1, 3]

Roll,Pitch,Yaw图解

http://howthingsfly.si.edu/flight-dynamics/roll-pitch-and-yaw

在UE4中:

  • Roll,绕着X轴旋转
  • Pitch,绕着Y轴旋转
  • Yaw,绕着Z轴旋转

转向(鼠标控制)

添加鼠标映射


在蓝图中添加刚刚映射的输入事件



到这里会出现一个问题,人物旋转180度后,向前移动会变成向后移动。

因为移动的值为世界坐标。这里修改,首先获取人物朝向。


同样左右也需要按照人物的朝向进行左右移动。

(需要在人物朝向上在旋转90度)


关于右向移动还有个更简单的做法。

上下看

添加鼠标映射


事件连上pitch input


这个时候,自身的旋转和角色的旋转是分开的。需要勾选上:


然后添加一个camera,并将camera往上移一点。



现在鼠标Y轴移动,和游戏中的使用习惯是相反的。这个把scale改成-1:

挂点(把枪约束到手上)

选择需要进行挂点的骨骼:


添加后更改一个名字,方便识别:


右键选择添加预览,来查看位置是否合适:


一定要在animation标签下进行选择:


选择RightWeapon这个挂点,将它扶正。

然后保存挂点:分别切换到Skeleton和Animation,点Save。


之前只是增加了挂点,然后添加了一个预览。这里要实际把枪放在手上:

1.添加SkeletalMesh


2.把SkeletalMesh放在Mesh里,在Mesh修改挂点,Parent Socket属性

Anima blendrspace

动画融合。

这里的例子是制作跑步的动画,首先创建一个Blend Space 1D(基于一个value进行变化)


选择骨骼


双击进入蓝图,在Animation标签下,把动画拖动进去:


修改最大值,参考人物移动的最大速度:



替换默认的人物静止动画,双击进入蓝图,然后删除默认的,添加刚刚创建的blenderspace蓝图。



这里要获取人物的行走速度,添加下面几个节点:


在class setting里取消勾选,不然编译会warning。(虽然不会有影响)

参考:https://answers.unrealengine.com/questions/577231/character-blueprint-compile-issue.html

Animation Montage

添加持续开枪的动画。

添加一个蓝图,类型为Animation Montage。重命名为FppRifleFire_Montage


将动画拖动到这边


开启动画循环


创建一个鼠action mapping


添加鼠标左键按下,和释放时候播放的动画蒙太奇


添加一个Slot

添加枪火

添加一个arrow在枪模型下,这样arrow会跟随枪的运动。


将arrow移动到枪口的位置,红色的大箭头为特效的朝向。


添加Spawn Emitter Attached节点


在鼠标释放时,销毁特效:首先要获取这个特效的变量,然后在鼠标释放时销毁这个变量。

创建函数

这里的作用是把开火和停止开火的一系列节点包装起来。

1.新建一个函数


2.将对应的节点剪切,然后粘贴到函数中,再连接上

创建机器人

新建一个Character蓝图类,在Mesh里选择正确的模型。把模型移动到正确的位置。


然后将它放置到场景中。现在它只是一个模型,所以还有给他添加一个动画。

新建Animation Blueprint,选择HeroTPP的骨骼(模型对应的骨骼)。


添加一个Idel的动画


把动画蓝图关联到模型。

机器人行走范围

创建一个NavMeshBoundsVolume在场景中。通过缩放和移动包含整个场景大小。


按键盘P键,显示机器人可移动的具体路径。(绿色部分)

使机器人行走

这里要添加一个AIController蓝图类。


在蓝图类中添加节点


在AI的角色蓝图中选择刚刚创建AIController蓝图类


让AI在追到角色过后,继续循环追逐动作

添加机器人动作

新建一个蓝图 Animation - Blend Space 1D


动画蓝图

添加射击动画

创建一个ShootOnce的函数


修改StartFire函数(Sequence的作用是,按顺序执行节点,先执行Then0,在Then1)


在ShootOnce里修改函数


关于LineTraceByChannel节点

  • Actors to Ignore:忽略的数组(比如友军)
  • Draw Debug Type:显示弹道

最后设置松开鼠标的,停止射线

设置机器人能被击中

在机器人的构造脚本中修改

UE4常用类

Actor:可以被放在关卡中的类

Pawn:可以被控制的类

Character:可以行动的Pawn

继承关系


Controller:没有物理表现的Actor,可以控制一个Pawn

PlayerController:用于控制玩家角色

AIController:用来控制NPC

继承关系

计算机中的数据表示

:数据的最小单位,一个位仅有两种状态:1和0

字节:8个位组成一个字节,一个字节有256种状态(1kb=1024字节byte)