协程一般用于实现需要间隔一定的时间调用方法,比如将一个游戏对象移动至某一点,如果直接用transform.translate(pos)
,那么这个行为会在一帧之内完成,玩家会看见对象被瞬移至目的地。如果要展现移动的过程,就可以用协程来实现。
比如我要实现当前游戏对象移动至核心(core)的功能,则可以用如下代码:
IEnumerator goToCore()
{
Vector3 corePos = core.transform.position; //core的坐标
while(transform.position != corePos)
{
//用Translate方法移动
transform.Translate((corePos - transform.position) * Time.deltaTime * speed);
yield return new WaitForSeconds(0.01f); //每间隔0.01秒执行一次
}
}
然后在适当的位置开始执行协程:
StartCoroutine(goToCore());
更多资料可参考:https://www.cnblogs.com/Roz-001/p/11205700.html