动画蒙太奇
1. 什么是蒙太奇??
多个镜头的拼接。用在UE4里面就是多个动画的拼接。
同一个镜头拼接多次也是蒙太奇。
2. 怎么创建动画蒙太奇?
新建Animation Montage
将动画拖入编辑栏
如果想循环播放某个动画,在defautl中选中动画,再点击动画即可。
动画蒙太奇
1. 什么是蒙太奇??
多个镜头的拼接。用在UE4里面就是多个动画的拼接。
同一个镜头拼接多次也是蒙太奇。
2. 怎么创建动画蒙太奇?
新建Animation Montage
将动画拖入编辑栏
如果想循环播放某个动画,在defautl中选中动画,再点击动画即可。
怎么使用混合动画 blend Space?
在动画蓝图中直接拖出 blendSpace ,然后修改相应的参数
得到角色的移动速度
TryGetPawn(拿到角色)-->GetVelocity(拿到速度)-->VectorLength(速度的值)
动画合并 Blend Space 把两个动作合并
拖入两个动画,进入混合界面。
比如一个idle动画,一个run动画,在这两者之间混合。使用一个变量来控制他,是偏向idle还是偏向run。
使用挂点挂载枪械
在人物模型的Mesh上新加一个骨骼模型。
将骨骼模型的Parent Socket 挂载到相应的骨骼节点上。
将新加骨骼模型的旋转,位置都置为
挂载枪:
Animation Sequence
来源:3d软件,制作出的模型动作文件
挂载点加载:
1. 打开一个需要挂载模型的动画文件格式为Animation Sequence
2. 点开Skeleton Tree ,在骨骼上加一个挂点。
Add Socket --》 Add Preview Assert(加一个枪的模型来看效果)
上下看
AddControllerPitchInput
整体不跟着移动:
玩家蓝图 :User Controller Rotation Pitch 勾选
摄像机不跟着移动:
新加一个相机在蓝图中,把相机和模型放在同一级。
GetControlRotation 得到控制角色的旋转向量
CombineRotators 合并两个旋转向量
Add Conroller Yaw Input
增加绕Z轴旋转量
Roll --> X 飞机倾斜
Pitch --> Y 飞机拉升
Yaw --> Z 飞机拐弯
Rotator(Roll, Pitch, Yaw)
MakeRotator(Roll, Pitch, Yaw)
GetForwardVector 从旋转量中得到正向方向 ,如果旋转量都为0,正方向就是X轴的正方向
角色移动
1. 绑定键盘操作
Project Setting --> Engine Input
Axis Mapping 中是设置运动方向,上下左右的
给操作取个名字,绑定相应的键位,比如向前Forward绑定W键
2. 在人物蓝图中,绑定操作
到达Event Graph ,选择 MoveForward Action
调用位移函数 Add Movement Input
动画蓝图
动画蓝图基于骨骼
在人物蓝图中,设置Mesh的 Animation BluePrint为 Use Animation Blueprint ,选择制作好的动画蓝图。
开始游戏
进入游戏,鼠标可以进入游戏界面
Play In Editor:
Game Gets Mouse Control 勾上
自动控制玩家
选中玩家角色,Auto Possess Player 选中Player 0
蓝图初探
蓝图类默认打开是新开一个窗口和主窗口不同。
可以通过 Editor Preference --> Assert Editor Open Location 中去修改。
资源转移:
右键点击要转移的资源 --> Asset Actions --> Mirgrate 转移到新建工程的Contents目录中
linetracebychannel射 线追踪
get world location
获取方向是:get control rotation,然后转换成VECTOR,然后把这个数据归一化,即变成一个单位向量是用:normalize,用这个单位向量代表方向。
向量数乘的概念
方向 X 射程=终点的位置
乘法:vector*float
起点是坐标的原点,是射击的起点,所以需要将向量起点平移,所以用+节点,vector+vector, 叠加上方的getworldlocation
以上的数据做为end,终点
怎么在虚幻4里面制作UI。 就是用户界面的意思
导入准心资源。输入Cross导入到Shooter工程去。
双击进去把方框拖过去。
在白色方框里填准心 鼠标按住别动然后输入cross然后会发现准心太小勾选下Size to content就可以了
然后准心怎么用呢。 双击打开新建节点就好了。
怎么调整准心 把菊花调到最中间
准心菊花跟矛点不对齐 点Aligbnebt 对齐XY 设置0.5这里调整0准心就可以了。出现的问题是准心的左上角跑最中间去把这个对齐改成0.5 0.5就好了。
Anchots这里可以设置 不懂角度的UI这个是菊花锚点选择的位置 各种位置都有。
做的就是状态。
转换布尔只有一个转换的条件 是还是否。
谁知道血量呢, 你创造的RobotShooter知道的血量、然后建立个函数为GetShooter
在加一个返回变量这样转换结果返回了。让外面可以拿到结果。
Return Node 这个是返回节点,设置好说明外面的Shooter可以拿到这个数据
一定要记得点GetShooter 然后打钩Pure
想知道的是 这个角色有没有死, 最好的方式是提供一个函数叫 ISDead (是否已经死了)
打开IsDead 我们怎么判断机器人死了呢。 就是Health(血量)小于等于0 >=0 如果填写小于0 那么要多打一下才会死.
按下B加鼠标左键(这个条件是是否死亡)然后调用IsDead
那怎么解决这个问题呢
在这里面点击右边会出现个Loop Animation 动画循环。把打钩去了就不会一直播放死亡动画了。这个问题就解决了
那么第二个死亡的就是。当他们死亡后我们建立的个函数,让他们死亡后不在受到控制
会出现问题。
一个是进入死亡状态。 一直播放死亡状态
第二个 死亡了还是会跟着人物走。
是否死了是有一个返回值的。
建立个返回值名字为Dead 布尔类型。只要判断死还是不死。
还是切记要打钩Pure
这样血量等于0的时候 就直接进入死亡状态了。
容易忘记的,忘记勾选死亡播放重复动作, 尸体的跟随 切换来切换去执行线要连接好,否则会chuxi
动画状态机的作用是什么?
描述一个角色处于处于不同的状态。播放不同的状态。
加一个死亡的动作。 死亡也是有时间的。
addNew state machine 新建个状态机Locomotion 连接到 点击Locomotion这里面建立两个状态Alive跟Dead
把这些剪切到Alive里面去
Dead 很简单把拖过去就可以了。
编辑会出现警告。说这个不能为空。
addNew state machine(动画状态机)
Alive和Dead分别作用是什么
在Take Damage 打印下字符串。 看下有没有效果。新建个节点Print String
然后执行点链接起来 Health 链接过去会做个自动转换当调用Take Damgge那么就会打印出来
链接过去是的话走True 不是的话走False
然后在做个类型转换
如果机器人不掉血就是Take Danage里面没设置伤害值。 TakeDanage是受伤的意思
那怎么让机器人受伤呢。 还有那些用到前面学的概念
机器人要受伤需要一个血量。
变量那新建个Health 选择浮点数
然后编译下在最下面设置机器人的血量
还要写个函数,名字叫 机器人受伤的值减去伤害。 选择SET 设置伤害
还要加个参数
GET获得当前 SHT是设置
在把health拖过来设置Get Health 输入-号有个
然后怎么被使用, 编译下,然后打开FPPShooter
然后就用到Branch 快捷是B+鼠标左键
最后涉及到类型判断,怎么判断你射击的是机器人跟墙?从OutHittuo一条线出来就有Break Hit Result
睡了,一个通宵才学到这里,深度理解很废精力。zhe