3

Игра типа 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");
}

}

  • А не пробовал взглянуть в инспектор и посмотреть, что с компонентами коллайдеров происходит? Они вообще на местах? Enable? – Yaroslav Jun 09 '21 at 13:14
  • Да, там всё на местах и всё включено – Алина Терещенко Jun 09 '21 at 13:57
  • 1
    А если просто LoadScene сделать при перезагрузке, проблема воспроизводится? – SoulOFTrue Jun 21 '21 at 07:38

1 Answers1

0

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

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

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

S. Nick
  • 74,889