You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UE4 2D射击游戏Sprite朝向鼠标往复摆动问题求助

嘿,我来帮你解决这个UE4 2D Sprite旋转朝向鼠标的问题!从你的描述和蓝图来看,核心问题大概率出在坐标系理解偏差和旋转轴/角度计算的细节上,咱们一步步捋清楚:

1. 先纠正一个关键误区:2D旋转的轴选错了!

你提到要让Sprite绕Y轴旋转,但在UE4的2D游戏里,平面内的360度圆周旋转应该是绕Z轴进行的!绕Y轴旋转会让Sprite前后翻转,这绝对不是你要的效果——这可能是导致旋转异常摆动的核心原因之一。

2. 用ATAN2而不是ATAN,获取完整的360度角度

ATAN函数只能返回-90°到90°的角度,当鼠标移动到Sprite的左侧时,它会通过反转角度来“凑”结果,这就会导致Sprite往复摆动。而ATAN2可以根据X和Y的正负值,返回0°到360°(或-180°到180°)的完整角度,完美解决摆动问题。

3. 正确转换鼠标坐标:屏幕空间→世界空间

你的蓝图里直接用了鼠标的屏幕坐标来计算方向,但屏幕坐标和Sprite的世界坐标不在同一空间,必须先把鼠标位置转成世界空间坐标:

  • 用Get Mouse Position on Viewport获取屏幕坐标
  • 接着用Deproject Screen to World把屏幕坐标转成世界空间位置(注意要把Z值设置成和Sprite所在的Z轴高度一致,避免Z轴方向的干扰)

4. 修正初始朝向的角度偏移

你说Sprite默认状态下圆形部分朝上,而UE4中Sprite的默认Forward方向(X轴)是向右的。所以当你计算出鼠标的方向角度后,需要减去90°(或者加上270°)来修正这个偏移,让圆形部分准确朝向鼠标。

给你一套完整的蓝图实现步骤

按这个来绝对能解决问题:

  • 获取Sprite的世界位置:Get Actor Location
  • 获取鼠标的世界位置:先Get Mouse Position on Viewport,再Deproject Screen to World,取返回的Location(记得把Z值改成和Sprite的Z一致)
  • 计算方向向量:鼠标世界位置 - Sprite世界位置,得到一个Vector
  • 用ATAN2节点,输入方向向量的Y值作为第一个参数,X值作为第二个参数(UE4的2D坐标系里,Y是向上,X是向右,顺序别搞反!)
  • 把弧度转成度数:Radians to Degrees节点
  • 调整角度偏移:用-节点,把得到的度数减去90°(因为Sprite默认朝上,对应UE4坐标系的90°方向)
  • 设置Sprite的旋转:用Make Rotator节点,把Z轴值设为调整后的度数,然后用Set Actor Rotation(选择世界空间)

最后验证一下

如果按上面的步骤做,你会发现Sprite能360°跟随鼠标旋转,而且圆形部分准确朝向鼠标。之前的往复摆动是因为用了错误的旋转轴或者ATAN函数,角度差90°则是因为Sprite初始朝向和UE4默认坐标系的差异。

内容的提问来源于stack exchange,提问作者Karl Arthur Smink

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:13:12