Интерполяция векторов (проблема)

Программирование на Юнити.

Интерполяция векторов (проблема)

Сообщение LordWerewolf 24 май 2018, 06:58

Добрый день! Подскажите, плиз, как решить проблему:
Есть два объекта. При определенном событии они должны поменяться местами. На объектах висит скрипт с такой вот функцией:
Синтаксис:
Используется 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();
                }
            }
        }
    }
 

При должном событии вызывается эта функция у двух объектов и они начинают двигаться к координатам друг друга по дуге.
1- Проблема (Они двигаются оба по одной дуге, перекрывая друг друга в точке соприкосновения, а нужно чтобы двигались по разным. То есть один двигался по верхней дуге, а другой по нижней.)
2- Проблема (При достижении нужных координат, то есть условия [transform.localPosition == endPoint], почему-то не срабатывает break... не пойму почему...

Поделитесь опытом, кто знает в чем дело. Заранее спасибо!
LordWerewolf
UNIт
 
Сообщения: 81
Зарегистрирован: 04 апр 2016, 13:20

Re: Интерполяция векторов (проблема)

Сообщение 1max1 24 май 2018, 07:38

1. Если по дуге то через Базье
2. Определяй дистанцию к ендПоинт, а не равенство ему.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Интерполяция векторов (проблема)

Сообщение LordWerewolf 24 май 2018, 08:43

1max1 писал(а):1. Если по дуге то через Базье
2. Определяй дистанцию к ендПоинт, а не равенство ему.


1 - я так понимаю встроенных функций по кривой Безье нет? Надо самому писать?
2 - ок, попробую, спасибо.
LordWerewolf
UNIт
 
Сообщения: 81
Зарегистрирован: 04 апр 2016, 13:20

Re: Интерполяция векторов (проблема)

Сообщение 1max1 24 май 2018, 10:05

Встроенной нет кншно) Вот готовое решение на (js) https://answers.unity.com/questions/126 ... curve.html
пс Можно попробовать с кривыми пошаманить, но лично я никогда с ними дела не имел не знаю подойдут ли они https://docs.unity3d.com/ru/current/Man ... urves.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Интерполяция векторов (проблема)

Сообщение LordWerewolf 24 май 2018, 12:14

Спасибо, пойду изучать. :-bd
LordWerewolf
UNIт
 
Сообщения: 81
Зарегистрирован: 04 апр 2016, 13:20


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 4