Задать вопрос
@youkerni
Unity3D developer

Почему один объект двигается быстрее остальных?

Вот такое поведение имеется.

Суть: я двигаю один объект, а остальным транслирую на сколько и в каком направлении был сдвинут этот объект. Однако объект который я двигаю изначально - двигается быстрее остальных.. Не могу понять почему.

//Объект который двигаю
void OnFixedUpdate()
    {
        if (IsDragged)
        {
            var lastPosition = transform.position;
            direction = cursorPosition - (Vector2)transform.position;
            transform.Translate(direction * Time.fixedDeltaTime * dragSpeed);
            if (OnDragEvent != null)
                OnDragEvent(this, transform.position - lastPosition);
        }
    }


//Список объектов повторяющих движение. Метод вызывается при генерации события OnDragEvent
void TranslateDrag(IDragable obj, Vector2 v)
    {
        for (int i = 0; i < groupObjects.Count; i++)
        {
            if (groupObjects[i] != obj)
                (groupObjects[i] as SelectableComponent).transform.position += (Vector3)v;
        }
    }
  • Вопрос задан
  • 180 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
@youkerni Автор вопроса
Unity3D developer
if (groupObjects[i] != obj)
                (groupObjects[i] as SelectableComponent).transform.position += (Vector3)v;


Вот эта проверка был некорректной. Я сравнивал ISelectable и IDraggable, из-за чего объект который я двигал изначально двигался дважды на один и тот же вектор.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks Куратор тега Unity
Вы direction не нормировали.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы