@OnyxRafe

Почему Удаляется новый заспавненый объект?

У меня есть массив объектов, я их спавню через InvokeRepeating, и мне надо удалять объект когда он дотронется колладера.
Я создаю клон префаба объекта, потом этот клон когда дотрагивается коллайдера, то он не удаляется, а удаляется тот клон, который только что заспавнился в другом месте, нигде не могу найти решения, помогите, пожалуйста

ItemSpawn.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemSpawn : MonoBehaviour
{
   
    public GameObject[] clothes; //объекты, кторые надо спавнить
    public Transform objspawn;// координата для спавна
    public float spawnrate;//частота спавна
    public float speed;// скорость движения объекта
    public int rand;//рандом для clothes

    
    public GameObject duplObj; //клон clothes
    public int i;
    void Start()
    {

        //спавн объектов через заданное время spawnrate
         InvokeRepeating("SpawnObj", 1f, spawnrate);
    }

   
    void Update()
    {
        i = rand;
        
    }

    void SpawnObj()
    {
     //сам спавн   
        rand = Random.Range(0, clothes.Length);
       
        //тут создается клон объекта
               duplObj= Instantiate(clothes[i], objspawn.position, transform.rotation);
      
    }
}


ItemMovement.cs, который прикреплен к объекту
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemMovement : MonoBehaviour
{
    ItemSpawn itemSpawn;
     
    void Start()
    {
        itemSpawn = GameObject.Find("Main Camera").GetComponent<ItemSpawn>();//для определения нахождения скрипта на объекте
        
    }

    private void FixedUpdate()
    {
        transform.Translate(itemSpawn.speed * Time.deltaTime, 0, 0);//движение объекта
    }
  

    //Здесь происходит уничтожение клона, если он соприкасается с объектом, у которого тег Destroy
    private void OnTriggerEnter2D(Collider2D collis)
    {
        if (collis.gameObject.tag == "Destroy")
        {
            Destroy(itemSpawn.duplObj);

        }

    }
}
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 2
@OnyxRafe Автор вопроса
Вот что я еще выяснил, а это: если удалить клон пока не прошло заданное кол-во времени спавнрэйта, то удаляется новый клон
Но как это исправить
я даже через корутину пытался, но все тоже самое
Ответ написан
Комментировать
Кажется, ты постоянно обновляешь переменную duplObj во время спавна. В итоге она всегда указывает на только что созданный объект, который ты и удаляешь в ItemMovement.OnTriggerEnter2D
Ответ написан
Ваш ответ на вопрос

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

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