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

Unity 2D中如何让火柴人手臂朝向鼠标光标?

实现Unity 2D火柴人手臂朝向鼠标光标

先看你的火柴人效果:

火柴人

可以通过以下步骤实现手臂跟随鼠标:

  • 步骤1:给手臂挂载脚本
    给火柴人手臂的GameObject添加如下C#脚本,核心是计算鼠标与手臂的相对位置,转换为旋转角度:
using UnityEngine;

public class ArmFollowMouse : MonoBehaviour
{
    [Header("角度偏移(根据手臂初始朝向调整)")]
    public float angleOffset = 0f;

    void Update()
    {
        // 将鼠标屏幕坐标转为世界坐标(2D场景下z轴设为0,避免深度问题)
        Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        mouseWorldPos.z = 0f;

        // 计算手臂指向鼠标的方向向量
        Vector3 lookDirection = mouseWorldPos - transform.position;
        lookDirection.Normalize();

        // 计算旋转角度(弧度转角度)
        float targetAngle = Mathf.Atan2(lookDirection.y, lookDirection.x) * Mathf.Rad2Deg;

        // 应用角度偏移后设置旋转
        transform.rotation = Quaternion.Euler(0, 0, targetAngle + angleOffset);
    }
}
  • 步骤2:调整角度偏移
    如果手臂初始朝向和计算出的角度不匹配(比如手臂默认朝上,但鼠标在右侧时手臂却朝右),可以在Inspector面板中调整angleOffset值,比如加90或者减90,直到旋转方向符合预期。

  • 注意事项

    • 确保主相机是正交相机(2D项目默认设置),如果是透视相机,需要调整mouseWorldPos.z为相机到手臂的距离;
    • 手臂的 pivot 点要设置在肩膀位置,否则旋转会出现偏移;
    • 如果需要限制手臂旋转范围(比如不能绕到背后),可以用Mathf.Clamp对targetAngle进行范围限制。

内容的提问来源于stack exchange,提问作者zeenub

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:46:11