Unity3D减慢时间时的抖动动作

本文关键字:抖动 时间 Unity3D | 更新日期: 2023-09-27 18:16:27

我正在使用这个网站的代码来创建慢动作效果

慢动作效果

在个人电脑上运行正常,但在手机上运行缓慢。

下面是android 的代码
if (Input.touchCount > 0) 
    {
        if(Input.GetTouch(0).phase == TouchPhase.Began)
        { 
            Time.timeScale = 1.0f;  
            Time.fixedDeltaTime = Time.fixedDeltaTime * newTimeScale;  
            Time.maximumDeltaTime = Time.maximumDeltaTime * newTimeScale; 
        }
        else if (Input.GetTouch (0).phase == TouchPhase.Ended) 
        {
            Time.timeScale = newTimeScale;  
            Time.fixedDeltaTime = Time.fixedDeltaTime / newTimeScale;  
            Time.maximumDeltaTime = Time.maximumDeltaTime / newTimeScale;
        } 
    }

我猜是TouchPhase。Ended是begin一遍又一遍地被调用,所以我得到了这个延迟效果,因为我尝试在PC上用KeyDown和KeyUp方法做同样的事情,我得到了同样的延迟效果,但这应该不会发生,因为touchCount等于0。我不知道,我完全没有主意了。任何帮助都将不胜感激。

Unity3D减慢时间时的抖动动作

比起使用TouchPhase,你可以创建自己的TouchUp和TouchDown

bool wasDown = false;
void Update()
{
  bool isDown = Input.touchCount > 0;
  if(!wasDown && isDown)
  {
    wasDown = true;
    //do touch down stuff, Time.timeScale = 1.0f etc
  }
  if(wasDown && !isDown)
  {
    wasDown = false;
    //do touch up stuff, Time.timeScale = newTimeScale etc
  }
}