Задать вопрос
@romchansky

Почему OnCollisionEnter2D срабатывает несколько раз?

Добрый день! Решил попробовать сделать игру на подобие тетрис. Проблема в следующем: когда плитки падают на дно поля - все ок (появляется одна новая плитка, как и положено), но когда плитки падают друг на друга, как я понимаю, код срабатывает два раза (появляется миллион плиток, так как место спауна у них одно и все крашится нафик). Я попробовал отключить скрипт у той плитки, которая уже упала, но все тщетно. Подскажите, пожалуйста. Соре если тут что-то тупо, я новичок совсем)
Спасибо!
public void OnCollisionEnter2D(Collision2D collision)
    {
        TilesController script = GetComponent<TilesController>();

        Debug.Log("Hit");
        speed = 0;
        step = 0;
        
        SpawnManager.FindObjectOfType<SpawnManager>().SpawnPiece();

        script.enabled = false;
    }


На всякий случай скрипт спауна:
public class SpawnManager : MonoBehaviour
{
    public GameObject[] tiles = new GameObject[6];
    private Vector3 spawnPosition = new Vector3(0, 7, -1);
    
    // Start is called before the first frame update
    void Start()
    {
        SpawnPiece(); 
    }

    // Update is called once per frame
    void Update()
    {
                
    }

    public void SpawnPiece()
    {
        int random = Random.Range(0, tiles.Length);
        GameObject _tile = this.tiles[random];
        _tile.transform.position = spawnPosition;

        Instantiate(_tile);
    }        
}
  • Вопрос задан
  • 90 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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