При рестарте уровня в Unity скрипты перестают правильно работать

Игра типа Slide Puzzle. Необходимо двигать блоки чтобы вытащить необходимый блок. В моём случае это машинки на парковке. Написала скрипт при помощи которого передвигаются 2д машинки.

Однако при рестарте уровня они начинают проходить сквозь друг друга. Подскажите пожалуйста, в чём проблема?

видео-пример

Код перемещения машинок

using System.Collections.Generic;
using UnityEngine;

public class TouchDrag : MonoBehaviour
{

    private bool walk;

    
    Rigidbody2D rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody2D> ();
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            walk = true;
        }
        if(walk == true)
        {

            Vector3 touchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

            if (GetComponent<Collider2D>() == Physics2D.OverlapPoint(touchPos))
            {
                rb.MovePosition(new Vector2(touchPos.x, touchPos.y));
            }

        }
        if (Input.GetMouseButtonUp(0))
        {
            walk = false;
        }
    }

}

Код рестарта уровня

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Restart : MonoBehaviour {

    
    public void RestartLevel()
    {
        SceneManager.LoadSceneAsync("MiniGame");
    }
}

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

Автор решения: Данил

А почему используешь именно Awake?
И попробуй вот этот код для перезапуска сцены

SceneManager.LoadScene (SceneManager.GetActiveScene ().name);

Вообще почитал об этом у кого-то возникали проблемы из за версий движка.

→ Ссылка