Why the object being moved is faster than the rest?

Behaviour i have now - http://skrinshoter.ru/v/090918/lZLCoJYj?a

I move one object, for other I translate by how much and in what direction this object was moved. However, the object that I move initially - moves faster than others … I can not understand why.

//This object moved by player
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);

//This method repeat the movement on another objects. Method called when OnDragEvent executed
void TranslateDrag(IDragable obj, Vector2 v)
     for (int i = 0; i < groupObjects.Count; i++)
           if (groupObjects *!= obj)*

(groupObjects as SelectableComponent).transform.position += (Vector3)v;

I don’t see any sanity checks in place by your example to prevent the TranslateDrag() event from affecting the object you’re actively moving as well.

I would venture a guess that when you drag one object around, you move it, then you tell all of the objects, including the one you just moved, to move by the same amount.

As a result, the object you drag is moving exactly twice as fast as all of the others linked to it.

What you may want to do, then, is not move the object during your isDragged check in OnFixedUpdate(). Instead, simply record the value for the movement without moving the object and let the OnDragEvent handle the movement of the selected object, too.

I’m not sure, but…

HAve the objects the same scale? Depending on how you are moving them, is possiblee that scale affects the realworld distance to move.

Check it. Bye!ª