这篇日志是对第一篇的否定,即pawn不是角色脚底下相连的控制物,在人物蓝图中,pawn就是包括人物基础actor在内的character类,是个特殊的pawn。
公式pawn(character)=actor+controller
那个脚底下的东西应该是controller,但这个应该没有和actor连着
然后针对将旋转朝向运动的功能理解,我做了个量化比较实验。
首先要有三个打印文本
人物蓝图中的“获取控制旋转”
动画蓝图中的“获取控制旋转”与“获取actor旋转
**有点杂乱,不过不影响,这实现的功能就是人物根据”wasd“按键形成行走动画+头部随鼠标有左顾右盼上仰下探的动画动作
只需要关注”获取控制旋转“到后面的”打印文本“以及”获取actor“旋转到后面的打印文本
前提是除了第一张蓝图实现的”wasd“运动蓝图外外,你还编写好了靠鼠标变换视角的事件蓝图
然后先将摄像机设置全打勾(人物蓝图——springarm——细节面板——摄像机设置)
将charactermovement的细节面板中的”将旋转朝向运动“不打勾+类默认值中pawn属性的三个”使用控制器旋转“不打勾
进行实验:
直观感受,人物角色只有面部朝前的移动,但是两个”获取控制旋转“的文本输出同时变化,所以,这两个pawn是一体的。
再将”将旋转朝向运动“打勾
进行实验:
直观感受:actor的面部朝向可以随鼠标改变并且有一数值会从任一角度在actor朝向随旋转变换完后迅速的过度到0.
就比如:你鼠标移动了一下,然后控制器通过一个封装函数“添加控制器xx输入“(第一篇文章有直观的蓝图)将你的移动值经过处理输出一个旋转轴值给对象(pawn),然后你按下了W,人物会转相同的角度。然后actor的旋转角就归0
我们先看官方解释:旋转角色朝向加速方向
这里的加速方向其实就是所谓的”正前方“,有个箭头指向的方向。
梳理一遍:鼠标(控制器)通过蓝图将自己的变化转化为了值输给了pawn(character),pawn转动了角度,那个指向前方的箭头也转动了一个角度,此时,加速方向不再是禁止的人物(actor)面朝的方向,而是与其成一个固定角度的方向。
当你按下W,actor根据”将旋转朝向运动“旋转了固定角,更新了新的加速方向,这时,pawn就没有旋转了。
其实现实情况下,(actor)人物模型其实可以看成是和pawn(character)这个类一起旋转的,但如将时间无限小,还是有先后的,因为代码执行也需要耗时。
所以,这既是将旋转朝向运动的功能,在这个实验中你也可以从中深入研究UE4的底层逻辑。
最后我总结一下我对character这个东西的新的见解:你就算不加人物模型到character类,将碰撞体可视化后,你也可以看见碰撞体在运动。