Есть два объекта. При определенном событии они должны поменяться местами. На объектах висит скрипт с такой вот функцией:
Синтаксис:
Используется csharp
public IEnumerator moveToTarget(Vector3 endPoint, byte n)
{
while (true)
{
if (transform.localPosition == endPoint)
{
break;
}
else
{
if (n == 1)
{
transform.localPosition = Vector3.Slerp(transform.localPosition, endPoint, Time.deltaTime * speedmove);
yield return new WaitForFixedUpdate();
}
if (n == 2)
{
transform.localPosition = Vector3.Slerp(transform.localPosition, endPoint, Time.deltaTime * speedmove);
yield return new WaitForFixedUpdate();
}
}
}
}
{
while (true)
{
if (transform.localPosition == endPoint)
{
break;
}
else
{
if (n == 1)
{
transform.localPosition = Vector3.Slerp(transform.localPosition, endPoint, Time.deltaTime * speedmove);
yield return new WaitForFixedUpdate();
}
if (n == 2)
{
transform.localPosition = Vector3.Slerp(transform.localPosition, endPoint, Time.deltaTime * speedmove);
yield return new WaitForFixedUpdate();
}
}
}
}
При должном событии вызывается эта функция у двух объектов и они начинают двигаться к координатам друг друга по дуге.
1- Проблема (Они двигаются оба по одной дуге, перекрывая друг друга в точке соприкосновения, а нужно чтобы двигались по разным. То есть один двигался по верхней дуге, а другой по нижней.)
2- Проблема (При достижении нужных координат, то есть условия [transform.localPosition == endPoint], почему-то не срабатывает break... не пойму почему...
Поделитесь опытом, кто знает в чем дело. Заранее спасибо!