#unity3d #animation #while-loop
Вопрос:
Персонажи перемещаются с одной стороны экрана на другую. Движение заканчивается, когда циклы while завершены, но анимация «Выполнить» продолжается.
void Update()
{
if(selected == true)
Move()
}
void Move()
{
pos = left.transform.position;
StartCoroutine(MoveOverTime());
IEnumerator MoveOverTime()
{
while (transform.position != pos)
{
transform.position = Vector3.MoveTowards(transform.position, pos, 0.04f * Time.deltaTime);
animator.Play("Run");
yield return null;
}
selected = false;
yield return null;
}
}
Комментарии:
1. Хорошо данный pos изготовлен из поплавков. Весьма вероятно, что 2 значения никогда не будут точно равны
Ответ №1:
Вы должны использовать правильное сравнение с плавающей точкой, чтобы предотвратить ожидаемое условие почти никогда не совпадающего значения.
Попробуйте использовать (transform.position - pos).magnitude > 0.1f
вместо этого. Вы можете настроить точность по своему усмотрению.
Комментарии:
1. извините, но пока ((transform.position — pos).величина
2. @cfdoh извините. Вместо этого должно было быть>. Надеюсь, вы уже поняли это.