如何在Unity更新中使用协程来等待秒来旋转相机?(c#)
本文关键字:旋转 等待 相机 Unity 更新 | 更新日期: 2023-09-27 18:02:28
这是我的一部分代码:
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度。(例如,玩家击中敌人)几秒钟后,镜头转回到原来的位置。
在我的代码中,第一部分是OK的,它按照我想要的方式转动,但是当协程部分来的时候,它开始转动,但是它是滞后的,而且它不光滑。
我不知道。还有别的办法吗?
我猜它是滞后的,因为你调用了很多次。在Update()中,你每秒调用函数CameraFlip()多次。
你可以做的就是创建一个bool变量,就像这样:
private bool testingFlip = false;
然后在需要的时候检查一下,例如:
void Update(){
if (!testingFlip){`
CameraFlip();
testingFlip = true;
}
}
在某些情况下,你又把它设为假,以便在需要的时候使用它。这并不奇怪,但这是一个很好的方法来测试这是否是导致延迟的原因。