使用Unity检测长按距离

Detecting long press with Unity with distance

我目前正在寻找一种检测长按和点击的解决方案,但我有点迷路,我知道它与 deltaPositiondeltaTime 有关。

谁能给我解释一下?我是 Unity 新手。

它是用来拖一个按钮的,所以我会按下按钮几帧,如果我拖它几个像素,它就会进入DRAG_STATE,如果我点击它,它就会消失进入 TAPPED_STATE.

备注:

当你检测到压力时,你就会存储这个位置。在以下帧中,您检查位置是否已更改:

Vector3 position;
void Update(){
    if(Input.GetMouseButtonDown(0)) { this.position = Input.mousePosition;}
    else if(Input.GetMouseButton(0)){ 
        float distance = Vector3.Distance(this.position, Input.mousePosition);
    } 
    else if(Input.GetMouseButtonUp(0)) { this.position = Vector3.zero }
}

因此在输入时,您只需记录位置,即用户按下按钮的时间。该帧上没有其他任何事情发生。

下一帧,如果用户一直按下,我们比较前一个(初始)位置和当前位置。这是您应该在需要的地方通过该距离的地方。如果距离足够小,你会丢弃阻力或忽略它。

最后,当用户释放按钮时,我们重置为 0。您可能希望重置为某个负值以确保该值不是可用值(虽然 0 不太可能,但并非不可能)。