如何检查Unity中的触摸是否在一定范围内来回移动

本文关键字:是否 范围内 移动 触摸 何检查 检查 Unity | 更新日期: 2023-09-27 18:11:26

我想知道如何检测触摸在Unity中来回移动。

因此,正如图像所示,我正在寻找一种方法来检测触摸何时从其起始位置(1)移动到第二个x(2),然后以一定的速度在一定的时间框架内返回到起始位置(3)附近的某个地方,基本上类似于抖动手势。我真不知道该怎么做。如有任何帮助,我将不胜感激。

说明我的意思

到目前为止,我只知道如何通过触摸获得起始位置。

Vector2 startingPos;
float shakeTime = 2f;
void Update()
{
    foreach(Input.touch touch in Input.touches)
    {
       if(touch.phase == TouchPhase.Began)
       {
          startingPos = touch.position;
       }
    }
}

如何检查Unity中的触摸是否在一定范围内来回移动

float touchTimer=0f;
float shakeTime = 2f;
float moveAwayLimit = 1f;
float moveBackLimit = .5f;
bool awayReached = false;
Vector2 startingPos;
void Update()
{
    foreach (Touch touch in Input.touches)
    {
        if (touch.phase == TouchPhase.Began)
        {
            startingPos = touch.position;
            touchTimer = 0;
            awayReached = false;
        }
        if (Vector2.Distance(touch.position, startingPos) > moveAwayLimit && touchTimer < shakeTime && !awayReached)
        {
            awayReached = true;
        }
        else if (Vector2.Distance(touch.position, startingPos) < moveBackLimit && touchTimer < shakeTime && awayReached)
        {
            Shake();
        }
        touchTimer += Time.deltaTime;
    }
}

像这样的东西应该工作,它检查你是否从一开始就远离moveAwayLimit,之后如果你在startingPosmoveBackLimit范围内。