用虚幻4蓝图制作FPS

zhangly 2021-11-02 02:16:35
Categories: > > Tags:

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

1.png

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

2.png

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

3.png

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

4.png

创建一个character蓝图类

创建后赋予模型

5.png

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

6.png

新建一个animation蓝图类

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

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

8.png

将animation蓝图动作给到character蓝图

9.png

添加按键映射

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

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

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

12.png
13.png

什么是向量

一组有序数字。

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

14.png

Roll,Pitch,Yaw图解

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

在UE4中:

15.png

转向(鼠标控制)

添加鼠标映射

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

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

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

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

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

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

21.png

上下看

添加鼠标映射

22.png
事件连上pitch input

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

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

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

27.png

挂点(把枪约束到手上)

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

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

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

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

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

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

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

1.添加SkeletalMesh

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

34.png

Anima blendrspace

动画融合。

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

35.png
选择骨骼

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

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

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

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

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

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

43.png

Animation Montage

添加持续开枪的动画。

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

44.png
将动画拖动到这边

45.png
开启动画循环

46.png
创建一个鼠action mapping

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

48.png
添加一个Slot

49.png

添加枪火

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

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

51.png
添加Spawn Emitter Attached节点

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

53.png

创建函数

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

1.新建一个函数

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

55.png

创建机器人

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

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

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

57.png
添加一个Idel的动画

58.png
把动画蓝图关联到模型。

59.png

机器人行走范围

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

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

61.png

使机器人行走

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

62.png
在蓝图类中添加节点

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

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

65.png

添加机器人动作

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

66.png
动画蓝图

67.png

添加射击动画

创建一个ShootOnce的函数

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

69.png
在ShootOnce里修改函数

70.png
关于LineTraceByChannel节点

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

71.png

设置机器人能被击中

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

72.png

UE4常用类

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

Pawn:可以被控制的类

Character:可以行动的Pawn

继承关系

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

PlayerController:用于控制玩家角色

AIController:用来控制NPC

继承关系

74.png

计算机中的数据表示

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

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