在第三人称视角下,动画的瞄准偏移如果是直接使用控制器的旋转值,会出现较大的视觉误差(近距离与远距离切换时没有差别)。我们需要做的就是使瞄准偏移量(Yaw,Pitch)能够瞄准屏幕中心所瞄准的点。
项目Demo源文件百度云盘
FindLookAtRotation节点
C++:
FRotator UKismetMathLibrary::FindLookAtRotation(const FVector& Start, const FVector& Target)
起始坐标的获取:
一般在持枪状态下值为枪的大概位置。本文简单起便直接使用当前角色的世界坐标,直接GetActorLocation就可以了。
目标坐标的获取:
通过摄像机发射光线追踪,撞击到目标得到世界坐标。
关键实现:
角色蓝图
在角色蓝图更新瞄准偏移的原始值
动画蓝图
限制值的最大值最小值,并使用插值平滑过渡。
如果是摄像机没有碰撞到物体,则使用控制器的旋转值
关于FindLookAtRotation的起始点需要微调。