用虚幻4蓝图制作FPS
用虚幻4蓝图制作FPS
lingyun将资源从一个工程拷贝到另一个工程
让所有打开的窗口都以标签显示
在编译完成后的时候自动保存
点击Play开始游戏的时候,获取鼠标控制
创建一个character蓝图类
创建后赋予模型
将character蓝图类,作为play时的视角
新建一个animation蓝图类
1.创建蓝图时,选择动画蓝图使用的骨骼。
将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度)
上下看
添加鼠标映射
现在鼠标Y轴移动,和游戏中的使用习惯是相反的。这个把scale改成-1:
挂点(把枪约束到手上)
选择需要进行挂点的骨骼:
然后保存挂点:分别切换到Skeleton和Animation,点Save。
之前只是增加了挂点,然后添加了一个预览。这里要实际把枪放在手上:
1.添加SkeletalMesh
2.把SkeletalMesh放在Mesh里,在Mesh修改挂点,Parent Socket属性
Anima blendrspace
动画融合。
这里的例子是制作跑步的动画,首先创建一个Blend Space 1D(基于一个value进行变化)
替换默认的人物静止动画,双击进入蓝图,然后删除默认的,添加刚刚创建的blenderspace蓝图。
在class setting里取消勾选,不然编译会warning。(虽然不会有影响)
参考:https://answers.unrealengine.com/questions/577231/character-blueprint-compile-issue.html
Animation Montage
添加持续开枪的动画。
添加一个蓝图,类型为Animation Montage。重命名为FppRifleFire_Montage
添加枪火
添加一个arrow在枪模型下,这样arrow会跟随枪的运动。
在鼠标释放时,销毁特效:首先要获取这个特效的变量,然后在鼠标释放时销毁这个变量。
创建函数
这里的作用是把开火和停止开火的一系列节点包装起来。
1.新建一个函数
创建机器人
新建一个Character蓝图类,在Mesh里选择正确的模型。把模型移动到正确的位置。
然后将它放置到场景中。现在它只是一个模型,所以还有给他添加一个动画。
新建Animation Blueprint,选择HeroTPP的骨骼(模型对应的骨骼)。
机器人行走范围
创建一个NavMeshBoundsVolume在场景中。通过缩放和移动包含整个场景大小。
使机器人行走
这里要添加一个AIController蓝图类。
在AI的角色蓝图中选择刚刚创建AIController蓝图类
添加机器人动作
新建一个蓝图 Animation - Blend Space 1D
添加射击动画
创建一个ShootOnce的函数
修改StartFire函数(Sequence的作用是,按顺序执行节点,先执行Then0,在Then1)
- Actors to Ignore:忽略的数组(比如友军)
- Draw Debug Type:显示弹道
最后设置松开鼠标的,停止射线
设置机器人能被击中
在机器人的构造脚本中修改
UE4常用类
Actor:可以被放在关卡中的类
Pawn:可以被控制的类
Character:可以行动的Pawn
继承关系
Controller:没有物理表现的Actor,可以控制一个Pawn
PlayerController:用于控制玩家角色
AIController:用来控制NPC
继承关系
计算机中的数据表示
位:数据的最小单位,一个位仅有两种状态:1和0
字节:8个位组成一个字节,一个字节有256种状态(1kb=1024字节byte)