赞
踩
动作映射是判断按的键是否按下或者释放,轴映射是用来判断是否按键一直按着的情况,每帧每帧检测。
(这边还有个小技巧就是可以把这个旁边的键点一下,变成黄色的然后输入自己想输入的字母)
---
然后在角色的文件夹下面创建一个角色的蓝图类,创建角色的蓝图类是因为角色蓝图专门用作人物的属性,封装了很多跑步、、蹲伏飞行等等属性
组件:不同组件可以给蓝图添加不同的功能,添加摄像机,碰撞体等等
课程内容2-2 21:08
笛卡尔的标准坐标轴,X轴始终是前后,Y轴始终是左右,Z轴始终是上下
课程内容2-2 27:00
输入轴坐标下面的axis是用来检测鼠标移动的快慢还有方向的,根据不同的速度和方向,来更改数值,然后添加控制器下面的Val节点是用来接收并产生对应的,这个是每一帧每一帧进行检测的,自增,满360度回0(0也是没有负数变成360)
这个时候只是将控制器和鼠标移动绑定在一起,还要将控制器和摄像机绑定起来,将这个打勾
而现在之所以会触碰鼠标,只应该是摄像机旋转,但是人物也跟着旋转的原因是类默认值是这样设置的
这个使用控制器旋转yaw的功能是和,下面这个功能是相反冲突的,只能一开一关。使旋转朝向运动
---
课程内容34:35
这个添加移动输入的节点,是用来角色的移动的
之所以要获得控制器的旋转是因为人物会随着控制器移动
然后控制Z轴的旋转,因为人物是绕着Z轴旋转的。左右只以正数来命名。
(这边当时有个疑惑,断开Z行吗,只连接Y或者Z。不行这就会出现这个问题)
解答就是,不连接Z轴固定,不会根据 角色移动时时更新
-----
动画蓝图
动画蓝图里面包含了事件图表和动画蓝图
这个词最小轴值和最大轴值是用来表示混合空间的范围的
下面这个是用来调这个动画到下一个动画的时间,数值越大,越慢。
传入具体 速度的数值后会在混合空间内触发对应动画,但不可能每一次都去修改,所以要提出一个速度的变量
然后通过上面这个speed作为中介来进行通信
记得把speed的默认值改成0
最后在创建的人物角色里选择这个蓝图类
-------
创建一个枚举,放置不同状态,创建这个枚举主要的目的是为了后面方便切换不同的状态
下面这边是定义了一个角色速度判断的函数
下面这边从character movement调出函数,就可以时时速度了(这边相当于直接和底层下白人属性进行了修改)
最后设置ctrl和shift来对枚举值进行修改
这一节结束,但注意理清事件图表与事件图表间的关系 。
有两大关系,一个是人物蓝图的,一个是动画蓝图的,通过对人物蓝图里对人物最底层的速度修改,在动画蓝图里进行调用速度执行不同动画。
--------
可以在项目设置里修改默认地图,上面这个是编辑器默认打卡的地图,下面这个是打包后游戏会打开的地图
---
还是一样写一个跳跃的函数,但是和上面速度判断不同的是,这里不同的条件要直接拉出对应的动画
这里要讲到一个概念叫做跟节点动画,如果取消了根节点动画,则每次动画都会从原点再次触发
在动画蓝图里添加自定义的插槽,可以在后面状态机里使用
这边跳跃动画的逻辑,也是需要上面判断速度的
来进行判断的,然后还要加个bool来判断是否能按空格来跳跃
-------------
坠落
在行走之后放置一个坠落的动画,中间是判断条件
这个NOT是直接将bool取反
----------------
会出现一个坠落跳跃的bug,所以要在动画蓝图添加一个bool来判断
先进行蓝图通信,类型转换,这边要先调出一个动画实例父类然后再转换成动画蓝图,然后再对其下的bool是否跳跃来进行设置
-------
有个摩檫力和制动降速的选项,这两个会相互影响,地面摩擦力很好理解就是摩擦力,下面哪个选项的意思是人物停止向前的时候,会向人物施加一个反向的力,这两个会互相影响,制动降速固定,摩檫力越大,则需要更长的时间人物才会停止。
-----
接下来设置人物的蹲伏操作,现在人物角色移动里搜索,crouch或者直接搜索蹲伏也行。
着几个参数,蹲伏半高的意思就是蹲下来后胶囊体的高度,最大蹲伏行走速度的意思是蹲下来后,人物行走的速度,蹲伏可走出平台的意思是,蹲下来后,能否进行掉落。一定要将可蹲伏这个选项打勾
接下来进行,人物蹲伏的判断
然后接下来放入相应动画,现在动画蓝图里输入对应蓝图。这边出现一个新的节点,按bool混合空间,然后下面也调整一下混合的时间,显得不会太生硬。
可以通过添加时间轴,调整摄像机的位置,这样可以实时的修改Y轴位置
-------------
下面要学一个附加动画,就是在原本执行一个动画的基础上还有其他的动画重叠上去。
在项目设置里对,动画进行这样的设置
然后设置一个AO空间,放入对应动画
接下来计算控制器旋转和人物朝向的差值,这边的计算略复杂写了个函数
然后将上面这块瞄准偏移生成一个函数
------------------
先将这个基础运动缓存下来,之所以要缓存是因为后面如果要多份的基础运动,就直接使用这个基础状态机就可以了
然后也是创建一个混合空间1D放入动画
然后再在动画蓝图里进行设置,创建一个是否持枪的bool变量然后设置动画这边的逻辑,然后接下来去人物蓝图里进行设置触发键。
--
然后配合着上面这个持枪的设置来对装备武器的设置
现在动画蓝图里进行设置
(这边这个返回条件出错导致找了很久),应该选的是播放动画剩余时间,选错了。一个的意思是当动画剩余0.1s时退出,一个是动画只播放0.1s
接着在人物蓝图里对是否装备武器还有装备武器的方向进行设置
---
然后将背包放在人物身后,点击背包模型然后点击继承mesh从然后新建当中选择新建骨骼网格体
背包就会生成在人物背后,但这个时候背包还没办法跟随人物进行移动,这边有个关键的设置总姿势的节点挺关键的,这个是用来将各种组件添加到人物身上,但前提得是同一个骨骼。
----------
添加武器
先创建一个武器的父类,之所以创建一个父类的原因,这里可以类比C++ 的父类和子类的继承关系 ,子类里面去详细的进行一些定义
然后在父类的下创建一个骨骼网格体的组件,这个基本人物都需要创建这个组件,这个组件功能是创建实列,静态网格体创建了只能固定的绑定在那里
然后再在人物骨骼下创建插槽,命名
然后再在人物的蓝图里创建新的命名变量,并把对应插槽的名字输入
然后要把这个武器的蓝图附加到人物蓝图上,要用到的是这个生成actor这个节点
这个创建变化是枪生成的位置
---
虽然这个时候枪已经出现在人物的背部了,但现在按切枪动作的时候枪不会跟着移到人物手上。现在要做的就是这个,让枪跟随插槽移动
现在要创建一个动画通知,创建动画通知的目的是让动画执行到这里的时候被中断,触发这个通知
然后接下来在上面我们创建的动画蓝图通知里去创建插槽切换
然后点击重载函数里面的已获取得到下图,下面这张图的两个引脚的意思分别是,上面那个意思是模型组件,是说哪个模型触发了,下面那个是表示是哪个动画触发了
然后就写一下完整的通知逻辑,这个逻辑是当动画运行到那一帧的时候会切换来这里执行这边的逻辑,也是需要用到添加附加组件,还新的插槽
------
接下来要做的是持枪的蹲
和上面一样的 操作流程,就是创建一个动画的混合空间,然后再在人物动画里面去实现逻辑,通过true或者false
然后是持枪的跳跃动画,持枪的跳跃和上面不一样的是需要在人物蓝图里修改,当然这是两种不同的方法,这种是直接在人物蓝图里通过节点来设置不同的动画。
--
下面来设置坠落时候的持枪动画
先将前面所以的动画蓝图剪切出去,并重新生成一个状态。
然后再在原来的坠落动画里,进行混合动画,并添加两个手部要混合的骨骼位置
这也是混合动画的写法,把要混合的部位添加分支过滤器
---------
但现在会出现一个跳跃的时候和持枪动画是冲突的情况,这个时候就要用到枚举,之所以要用到枚举是因为,枚举这个变量才能做到在跳跃当中修改了这个变量的值,在装备武器里也实现了修改
------------
瞄准
这边关键就是用到上面那个枚举的这个变量来进行切换,然后再填加个时间轴(为了是有时间进行切换),然后设置不同时间的弹簧臂。
然后还会出现一个问题,就是当我们进行瞄准的时候,是希望视角一直都是朝前的,所以这个时候还要去修改 yaw和那个朝向的问题,创立自定义事件。
写持枪不同方向的动画
因为UE4已经封装好了八个不同的方向,所以在不同的方向放入对应的动画就行了。
然后再在动画蓝图里设置相应的过去返回,还有动画逻辑就行了
最后再去人物蓝图里设置是否瞄准还有把走路速度也减缓,然后这边用到一个新的节点叫做选择节点。就是如果判断条件为真,就执行A,如果假,就执行B
----
IK
绕着一个骨骼旋转的称为正向运动学,反向运动学是直接绕着一个骨骼节点进行旋转
然后调出这个节点就是FABRIK,这个节点就是用来设置的
下面这个结束效果器,执行目标就是这个骨骼最后目标的骨骼是哪个,去到哪个骨骼。然后调整程无变化是因为防止骨骼变化出问题。
还有下面解算器是哪个目标骨骼跟着走,顶端骨骼是哪个骨骼,跟骨骼是和顶端骨骼一起确定了一个范围
-----
接着再写入蹲伏瞄准的动画
这边要注意瞄准偏移和混合动画的差别,瞄准偏移一般都只用在瞄准(例如到目前为止的头随着是视角的移动而移动,未持枪的动画;还有一个是持武器瞄准)。瞄准偏移拖入的动画必须是附加的动画,也就是经过这样处理的动画
最后 设置好蹲伏瞄准的动画即可,当然这边蹲伏瞄准使用的也是混合空间
---
要解决一个小问题,就是当人物蹲在物体下面时,会出现穿模的情况。这个时候就要进行将之前蹲伏的手动修改变成自动来进行修改
自动修改需要去人物的动画蓝图来进行设置,通过正在蹲伏这个蓝图节点来进行判断
-----------
第三周完
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。