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

角色翻转后武器localScale未同步且无法正确瞄准鼠标的问题

武器瞄准鼠标与父物体翻转同步问题解决

当玩家及武器挂载的父物体翻转时,武器的localScale未同步翻转。原本设置武器始终瞄准鼠标,但父物体翻转后该逻辑无法正确执行。

原代码

//获取鼠标位置
worldPos = Camera.main.ScreenToWorldPoint(Mouse.current.position.ReadValue());
_direction = (worldPos - (Vector2)weapon.transform.parent.position).normalized;
weapon.transform.parent.right = _direction;

//瞄准后方时翻转
angle = Mathf.Atan2(_direction.y, _direction.x) * Mathf.Rad2Deg;

Vector3 localScale = new Vector3(1, 1, 1);
if (angle > 90 || angle < -90)
{
    localScale.y = -1f;
}
else
{
    localScale.x = 1f;
}

weapon.transform.localScale = localScale;

尝试过的修改代码

我手动调整过武器的localScale,但结果要么武器上下颠倒,要么还是无法对准鼠标,修改后的代码如下:

//获取鼠标位置
worldPos = Camera.main.ScreenToWorldPoint(Mouse.current.position.ReadValue());
_direction = (worldPos - (Vector2)weapon.transform.parent.position).normalized;
weapon.transform.parent.right = _direction;

//瞄准后方时翻转
angle = Mathf.Atan2(_direction.y, _direction.x) * Mathf.Rad2Deg;

Vector3 localScale = new Vector3(1, 1, 1);
if (angle > 90 || angle < -90)
{
    localScale.x = -1f;
    localScale.y = -1f;
}
else
{
    localScale.x = 1f;
    localScale.y = 1f;
}

weapon.transform.localScale = localScale;

解决方案

修正思路

问题核心是父物体翻转后,武器的缩放逻辑未关联父物体当前状态,导致方向与缩放同步出错。需基于父物体缩放调整武器localScale,同时确保瞄准方向不受父物体变换干扰。

修正后代码

//获取鼠标位置,固定Z轴为相机近平面避免坐标异常
Vector3 worldPos = Camera.main.ScreenToWorldPoint(Mouse.current.position.ReadValue());
worldPos.z = Camera.main.nearClipPlane;

//计算世界空间下的瞄准方向,不受父物体缩放影响
Vector2 direction = (worldPos - weapon.transform.parent.position).normalized;

//让父物体朝向鼠标方向
weapon.transform.parent.right = direction;

//通过方向X轴正负判断是否需要翻转武器
bool needFlip = direction.x < 0;

//以父物体缩放的绝对值为基础,确保武器与父物体缩放同步
Vector3 parentScale = weapon.transform.parent.localScale;
Vector3 weaponScale = new Vector3(Mathf.Abs(parentScale.x), Mathf.Abs(parentScale.y), 1f);

//仅在需要时翻转武器X轴,避免Y轴颠倒
if (needFlip)
{
    weaponScale.x *= -1;
}

weapon.transform.localScale = weaponScale;

关键优化点

  • 用世界坐标计算瞄准方向,规避父物体缩放对向量的干扰
  • 基于父物体缩放绝对值设置武器基础缩放,同步父物体的缩放变化
  • 通过方向X轴正负判断翻转,替代复杂的角度区间判断,逻辑更简洁
  • 仅调整X轴缩放,保持Y轴与父物体一致,防止武器上下颠倒

内容的提问来源于stack exchange,提问作者S. Mazii

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:45:00