Движение LERP внутри Ienumerate не заканчивается ⇐ C#

Место общения программистов C#
Anonymous
Движение LERP внутри Ienumerate не заканчивается

Сообщение Anonymous »

Я работаю над игрой 2D Unity. Прямо сейчас игрок может собрать часть плота, нажимая E, и это переходит к ним в «меню плота», где они могут выбрать, где прикрепить новую часть. Сделайте это, у меня есть черный прямоугольник, который внутри ienumerate перемещается по экрану. Когда прямоугольник достигает средней точки (он же покрывает экран), родительский объект Overworld деактивируется, а родительский объект меню RAFT активируется. После этого объект перехода заканчивает свое движение. < /P>

Код: Выделить всё

public IEnumerator EnterRaftMenu()
{
Vector3 startPos = new Vector3(-32f, 0f, 0f);
Vector3 endPos = new Vector3(32f, 0f, 0f);

float duration = 0.5f;
float elapsed = 0f;

transition.position = startPos;

while (elapsed < duration)
{
transition.position = Vector3.Lerp(startPos, endPos, elapsed / duration);

//Switch to raft menu when transition covers screen
if (elapsed / duration >= 0.5f && overworldObject.activeSelf)
{
overworldObject.SetActive(false);
raftMenuObject.SetActive(true);
}

elapsed += Time.deltaTime;
yield return null;
}

transition.position = endPos;
}
< /code>
Моя проблема заключается в переходном движении. Он застрял после активных переключателей GameObject, и это просто покрывает экран на неопределенный срок.transition.position = endPos;
) не вызывается (Endpos находится за пределами экрана, но объект остается в середине экрана) и комментирует оператор IF исправляет движение. Я также должен упомянуть, что объект перехода не является ребенком любого другого объекта. Я попытался окружить петлю в попытке/поймать, есть ли какие -либо молчаливые ошибки и ничего. Я не могу придумать ничего другого, потому что логика кажется очень простой, и, по -видимому, оператор IF не изменяется или продолжилась.
Дайте мне знать, если вам нужны такие вещи, как другие фрагменты или скриншоты. Предложения по потенциальному улучшению это также ценится.

Подробнее здесь: https://stackoverflow.com/questions/796 ... -finishing

Вернуться в «C#»