精灵面对光标 - UE4 蓝图

问题描述

我正在 Ue4 中制作 2d 射击游戏。我正在尝试旋转精灵以面对鼠标。精灵稍后将成为一个隐藏的箭头,用于确定子弹生成时的方向。添加精灵是为了帮助我进行视觉调试。由于游戏是 2d,精灵应该只需要绕 Y 轴旋转即可。

精灵没有正确旋转。当我在游戏窗口的边缘移动鼠标指针时:它不是在一个圆圈中旋转 360 度,而是来回跷跷板(参见第二张图片)。

我认为这是弧度或世界空间问题,但我已经完成了我知道的基本故障排除。第一个图像是产生错误的最干净的蓝图版本。我尝试过 atanatan2 和 GetMousePosition 解决方案,所有这些解决方案看起来都与此有所不同。

在精灵图像中,红色圆圈显示了我的光标所在的位置。红色箭头只是为了帮助确定精灵倾斜的角度(它们都是错误的)。圆形钻头的顶部(红色箭头逆时针 90 度)应该面向鼠标。精灵的认未旋转位置的圆形位向上指向屏幕顶部。值得注意的是,实际旋转和期望旋转似乎都偏离了 90 度的倍数,但这可能是巧合。

对我做错了什么有任何想法吗?

UE4 Blueprint

Sprite Facing Mismatch

解决方法

我想通了。

我(错误地)假设鼠标在屏幕上的位置严格为 XY(Z 为 0)。从命中事件中弹出位置后,鼠标以 XZ 计算(Y 几乎不动)。

我切换回 ATAN2 解决方案(见于 BP),但发现我的精灵背对鼠标而不是朝向它。添加 -1 乘数修复了它,现在它可以按预期工作。

请参阅 BP 以获取完整解决方案。干杯,大家。

Blueprint that works correctly