在触摸时检测一次点击和长点击



我正在尝试实现两个触摸功能。一次敲击和长敲击。我已经实现了一个敲击,这很简单,但对于长敲击功能,必须设置计时器?

我希望长按只在按住水龙头1秒后激活,然后计时器应该在释放时重置。我该怎么做?

public float longTapTime;
void Update()
{
if ((Input.touchCount > 0) && (Input.GetTouch (0).phase == TouchPhase.Began)) {
//One tap
}
if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled)
{
longTapTime = 0;
}

}
using UnityEngine;
public class example : MonoBehaviour
{
[SerializeField]
private float long_tap_consider_duration = 1.0f;
private float time_helper;
private float duration;
private bool is_touched;
private void Start()
{
time_helper = 0;
duration = 0;
is_touched = false;
}
private void Update()
{
if (Input.touchCount > 0)
ProcessInput();
}
private void ProcessInput()
{
if (is_touched && ((Input.GetTouch(0).phase == TouchPhase.Ended) || (Input.GetTouch(0).phase == TouchPhase.Canceled)))
{
if (duration > long_tap_consider_duration)
OnLongTap();
else OnTap();
}
if (!is_touched && (Input.GetTouch(0).phase == TouchPhase.Began))
{
time_helper = Time.time;
is_touched = true;
}
duration = Time.time - time_helper;
}
//Callback function, when just a short tap occurs
private void OnTap()
{
Debug.Log("Short Tap");
}
//Callback function, when long tap occurs
private void OnLongTap()
{
Debug.Log("Long Tap");
}
}

实际上,如果您使用新的输入系统,这是一个内置功能,不需要任何代码。

  1. 找到您的输入操作"。inputActions">
  2. 在已注册的输入列表中找到该按钮
  3. 在选择该项目的情况下+"右侧单词"交互"旁边
  4. 添加一个";保持";从列表中进行交互并设置所需的保持时间

有关输入动作资产系统的详细信息:https://www.youtube.com/watch?v=mvuXOyKz7k4

最新更新