Проблема с перемещением объекта в Unity

На сцене есть красная сфера и красная платформа с белой сферой (дочерний объект от платформы).

Наглядный пример

При контакте красной сферы с триггером платформы белая сфера удаляется, а красная должна встать на её место и делается дочерней от платформы.

Вот так выглядит описание триггера (скрипт на платформе):

private void OnTriggerStay(Collider other)
    {
        if (other.gameObject.CompareTag(TagManager.GetTag(TagType.Cargo)))
        {
            var cargo = other.gameObject.GetComponent<Cargo>(); //доступ к скрипту на красной сфере
            if(cargo.Color == Color && cargo.Layer == Layer)
            {
                Debug.Log("Complete");

                SetActive(false); //выключаю коллайдер платформы (триггер)
                cargo.transform.parent = transform; //делаю красную сферу дочерней от платформы
                
                //Три попытки поместить красную сферу в позицию белой сферы:
                //cargo.transform.position = _child.transform.position;
                //cargo.FinishPosition();
                cargo.transform.localPosition = new Vector3(0f, 1f, 0f);

                Destroy(_child.gameObject); //удаляю белую сферу
            }
            else
            {
                Debug.Log("No complete");

                cargo.StartPosition();
            }
        }
    }

Но красная сфера во всех случаях перемещается в заданную позицию (Vector3(0f, 1f, 0f)) только на долю секунды, а потом её координаты меняются на те, которые были при столкновении красной сферы с триггером, но уже в локальных координатах платформы (за пределами игрового поля).

Скрипт на красной сфере:

public sealed class Cargo : BaseObject
    {
        private Vector3 _startPosition;
        private Vector3 _finishPosition;

        private void Awake()
        {
            _startPosition = transform.position;
            _finishPosition = new Vector3(0f, 1f, 0f);
        }

        public void FinishPosition()
        {
            transform.position = _finishPosition;
        }

        public void StartPosition()
        {
            transform.position = _startPosition;
        }
    }

Ответы (0 шт):