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

Unity基于玩家手部原点检测方向问题:如何避免同时输出左右与上下

问题修复方案

问题根源

原代码中X轴与Y轴的方向检测是两个独立的判断块,当对象处于左/右方向时,若Y轴坐标的整数部分与玩家手部相等,会同时触发上下方向的打印逻辑,导致输出重复。

修复思路

优先判断X轴的左右方向,仅当X轴几乎处于同一水平线时,再判断Y轴的上下方向,确保同一时刻只输出一个方向。

修复后的代码

public GameObject playersHand;
private Transform targetOrigin;
private Vector2 targetPos;
private Vector2 handPos;

void Start()
{
    targetOrigin = transform; // 简化写法,无需this.gameObject.transform
}

void Update()
{
    handPos = playersHand.transform.position;
    targetPos = targetOrigin.position;

    // 计算X轴和Y轴的整数差值
    int xDiff = (int)targetPos.x - (int)handPos.x;
    int yDiff = (int)targetPos.y - (int)handPos.y;

    // 优先判断左右方向
    if (xDiff > 0)
    {
        print("Left");
    }
    else if (xDiff < 0)
    {
        print("Right");
    }
    // X轴几乎重合时,再判断上下方向
    else
    {
        if (yDiff > 0)
        {
            print("Down");
        }
        else if (yDiff < 0)
        {
            print("Up");
        }
    }
}

关键修改点

  1. 调整判断优先级:先处理X轴的左右方向,只有当X轴整数差值为0时,才进入Y轴的上下判断,避免同时触发两个方向的输出。
  2. 简化逻辑实现:直接计算坐标整数部分的差值,替代原有的changed函数,逻辑更直观易懂。
  3. 变量命名优化:将mypos改为handPos,语义更清晰,便于维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:49:59