为什么增加transform.position in unity会导致iOS上的抖动?

时间:2015-11-16 06:07:26

标签: c# ios unity3d

我遇到了一个简单脚本的问题,这会导致sprite抖动。所有脚本都是:

public float speed; 

void Update () 
{ 
    var pos = transform.position;
    pos.y += speed * Time.deltaTime;
    transform.position = pos; 
} 

此代码在编辑器或独立版本中运行良好,但是当我尝试在iOS设备上运行它时,我看到一些抖动。该场景有3个游戏对象,上面的脚本没有刚体物理。只有三个物体在没有物理的情况下坠落。

知道它为什么会引起抖动吗?

2 个答案:

答案 0 :(得分:0)

这可能是因为您要在localhost/Brown/index.php中创建新的var pos

Update()每帧调用一次,因此Update()每帧都会被创建为一个新变量,从而减慢了计算时间,这就是为什么它会让人感到紧张。

pos方法之外创建var pos,这应解决问题:)

答案 1 :(得分:0)

尝试使用

  

Time.fixedDeltaTime

而不是

  

Time.deltaTime

就像我在下面的代码片段中所做的那样。

public float speed; 

void Update () 
{ 
    var pos = transform.position;
    pos.y += speed * Time.deltaTime;
    transform.position = pos; 
} 

希望它有所帮助。

编辑: 如果上面没有工作,那么尝试将它放在协同程序中,如下所示:

IEnumerator Move(){
    while (true) {
        yield return new WaitForSeconds(Time.fixedDeltaTime);
        float step = speed * Time.deltaTime;
        transform.position += Vector3.up*step;
    }
}

通过

在Start()中调用上述协同程序
  

StartCoroutine(通过MoveTo);