在Unity3D中减慢时间时的抖动

时间:2014-08-05 20:05:18

标签: c# android ios unity3d

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

Slow motion effect

它在PC上工作正常,但它在手机上滞后。

这是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一次又一次地被调用,所以我得到了这种滞后效应,因为我尝试在PC上使用KeyDown和KeyUp方法做同样的事情,我得到了相同的延迟效果但这应该是因为touchCount等于0,所以不会发生这种情况。我不知道,我的想法很多。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以制作自己的TouchUp和TouchDown

,而不是使用TouchPhase
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
  }
}