一、引入
在编写UE角色的前后左右移动的蓝图中,我们经常会使用get control rotation这种蓝图结点。实现一个可行的前后移动的蓝图如下。
上图的意思是,首先获取到控制器的旋转向量(该旋转向量是相对于世界坐标),由于只在平面运动,那么只需使用Yaw。由下列公式(应用即可,具体数学原理不细谈)
向前向量的计算公式,X=Cos(Pitch)*Cos(Yaw),Y=Cos(Pitch)*Sin(Yaw),Z= Sin(Pitch)。
向右向量的计算公式,X=> Sin(Roll)*Sin(Pitch)*Cos(Yaw)-Cos(Roll)*Sin(Yaw),Y=Sin(Roll)*Sin(Pitch)*Sin(Yaw)+Cos(Roll)*Cos(Yaw), Z= - Sin(Roll)*Cos(Pitch)。
向上向量的计算公式,X= -(Cos(Roll)*Sin(Pitch)*Cos(Yaw)+Sin(Roll)*Sin(Yaw)),Y=Cos(Yaw)*Sin(Roll) - Cos(Roll)*Sin(Pitch)*Sin(Yaw),Z = Cos(Roll)*Cos(Pitch)。
计算得到向前向量、向右向量和向上向量(相对于世界坐标)。将向前向量add进当前的移动输入,完成向前移动。
二、控制器方向、网格体方向、胶囊体方向
UE蓝图结点中存在控制器方向、网格体方向、胶囊体方向。因此存在疑惑,这两个方向能不能代替控制器方向实现相同的效果?
1.使用网格体方向
使用上面蓝图代替原先蓝图,得到小白人原地转圈的效果(俯视逆时针)
2.使用胶囊体方向
小白人正常前进,但是按住S时,人物可以后退、无法回头且不断抖动(试图转头)
导致上述现象的原因是什么呢?这就需要明确上面几个方向的具体意义。先抛出结论:
总结:
控制器方向:即游戏界面的方向。人类玩家操作控制器,所以电脑屏幕的朝向就是控制器的朝向。举个例子,在静止Idle状态下,玩家可以旋转一定视角观察游戏内角色Pawn的各个方面,角色Pawn的朝向没有变化,但是突然按W时,角色会向玩家屏幕的正向移动,也说明这就是控制器的向前向量。
网格体方向:即骨骼网格体组件的方向。在角色蓝图的视口可以查看。骨骼体的XYZ的原点在人物的根骨骼位置(具体参见根骨骼动画原理),其XYZ方向不一定与世界坐标一致(如图及图左下)。
胶囊体方向:即胶囊体组件的方向。在角色蓝图的视口可以查看。
Actor方向:与胶囊体方向一致。
三、深入实践
编写如下蓝图查看网格体(红色)、胶囊体(蓝色)、控制器(绿色)、Actor(黄色)的向前方向。
文章来源:https://www.toymoban.com/news/detail-627875.html
人物正向时,网格体向前方向(X,Y,Z)=(0,-1,0),胶囊体向前方向(1,0,0),Actor向前方向(1,0,0),控制器向前方向(1,0,0)。
分析:**X轴方向就是向前方向。**如上图,Actor的X轴正方向是网格体的Y轴正方向,Actor的Y轴正方向是网格体的X轴负方向。网格体的坐标轴方向与世界坐标轴的方向不一致,而其他的坐标轴初始方向均与世界坐标轴方向一致。在角色蓝图的视图中可以验证。
按S,人物朝向发生变动后,网格体向前方向(X,Y,Z)=(-0.779,-0.627,0),胶囊体向前方向(0.627,-0.779,0),Actor向前方向(0.627,-0.779,0),控制器向前方向(1,0,0)。
文章来源地址https://www.toymoban.com/news/detail-627875.html
到了这里,关于【UE】虚幻引擎控制器方向、网格体方向、胶囊体方向、Actor方向的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!