用虚幻4蓝图制作FPS
用虚幻4蓝图制作FPS
lingyun将资源从一个工程拷贝到另一个工程
让所有打开的窗口都以标签显示
在编译完成后的时候自动保存
点击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)