我遇到了一个简单脚本的问题,这会导致sprite抖动。所有脚本都是:
public float speed;
void Update ()
{
var pos = transform.position;
pos.y += speed * Time.deltaTime;
transform.position = pos;
}
此代码在编辑器或独立版本中运行良好,但是当我尝试在iOS设备上运行它时,我看到一些抖动。该场景有3个游戏对象,上面的脚本没有刚体物理。只有三个物体在没有物理的情况下坠落。
知道它为什么会引起抖动吗?
答案 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);