这是我的代码的一部分:
void Update(){
CameraFlip();
}
void CameraFlip(){
Quaternion target = Quaternion.Euler (0, 0, 180);
cameraTransform.rotation = Quaternion.Slerp (cameraTransform.rotation, target, Time.deltaTime * 4.0f);
Debug.Log (cameraTransform.rotation.ToString ());
StartCoroutine("CameraFlipCoroutine");
}
public IEnumerator CameraFlipCoroutine(){
yield return new WaitForSeconds (Random.Range(6f,12f));
if (gameIsPlaying == false)
yield return null;
Quaternion target = Quaternion.Euler (0, 0, 0);
cameraTransform.rotation = Quaternion.Slerp (cameraTransform.rotation, target, Time.deltaTime * 4.0f);
Debug.Log (cameraTransform.rotation.ToString ());
}
所以我想做的是如果在更新方法中发生了某些事情,则以180度角旋转相机。 (例如,玩家击中敌人)几秒钟后,相机会回到原来的位置。
使用我的代码,第一部分是好的,它按照我想要的方式转动但是当协程部分到来时,它开始转动但是它滞后而且不顺畅。
我不知道。还有其他办法吗?
答案 0 :(得分:0)
我猜它会滞后因为你多次调用它。在Update()上你每秒都会多次调用CameraFlip函数。
您可以做些什么来查看问题是否正在创建一个bool变量:
private bool testingFlip = false;
然后在需要时检查它,例如:
void Update(){
if (!testingFlip){`
CameraFlip();
testingFlip = true;
}
}
在某些时候,你再次将它弄错,以便在需要时使用它。这不是花哨的,但它是测试是否导致滞后的好方法。