Итак, у меня есть эта сопрограмма, которая перемещает объект в определенное место, и я делаю это для списка объектов, но я хочу, чтобы он перемещал их один за другим (то есть дождался, пока предыдущая сопрограмма не будет сделана, прежде чем начинать новую) но добавление любых выходов просто останавливает все это ... я немного растерялся, почему.
Я пытался добавить «yield return new WaitUnitl ()» или «WaitForSeconds», но где бы я ни пытался его разместить, он либо заставляет его ждать перед тем, как перемещать все сразу, либо они просто прекращают перемещать все сразу
Код перемещения:
public IEnumerator MoveObject(Vector3 source, Vector3 target, float overTime)
{
float startTime = Time.time;
while (Time.time < startTime + overTime)
{
transform.position = Vector3.Lerp(source, target, (Time.time - startTime) / overTime);
yield return null;
}
transform.position = target;
}
вызывается в цикле for:
for (int i = 0; i < CardsInHand.Count; i++)
{
Card c = CardsInHand[i];
Vector3 target = new Vector3(startt + (1.5f * i), transform.position.y);
StartCoroutine(c.MoveObject(c.transform.position, target, 1));
c.GetComponent<SpriteRenderer>().sortingOrder = i;
}
Ожидайте, что они будут двигаться по одному, а не все одновременно
Редактировать: ну, у меня был самый большой пук за всю историю .... я забыл использовать StartCoroutine () после того, как сделал метод сопрограммой ... и я продолжал задаваться вопросом, почему он не будет двигаться