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

Instantiate создаёт два объекта в unity 2D C# Что делать?

Я сделал скрипт и там создаётся объект но создаётся два объекта, почему?
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
 
public class Plus : MonoBehaviour 
{ 
    public string plusname; 
    public GameObject ReadyBall; 
 
    void OnCollisionEnter2D(Collision2D collision) 
    { 
        if (collision.gameObject.name == plusname) 
        { 
            Destroy(collision.gameObject); 
            Destroy(gameObject); 
            Instantiate(ReadyBall, (collision.gameObject.transform.position), Quaternion.identity); 
        } 
    } 
}
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Простой 3 комментария
Решения вопроса 1
@DrRen7
Скорее всего проблема в настойках Rigidbody, вероятно один объект попадает в другой и получается 2 и более столкновений, это если еще и скрипты правильно размещены, но сути у вас вообще не должно ничего создаваться из за удаления объекта до создания.

Я поправил написал должно работать , то лучше collision.gameObject.name == plusname заменить на collision.gameObject.tag
using UnityEngine; 
 
public class Plus : MonoBehaviour
{
    public string plusname;
    public GameObject ReadyBall;
    GameObject _colObj;
    bool _IsCol;

    private void Update()
    {
        if (_IsCol) Pluser();
    }

    void Pluser()
    {
        _colObj.SetActive(false);
        GameObject newObj= Instantiate(ReadyBall, (_colObj.transform.position), Quaternion.identity);
        newObj.transform.name = "CreateBy" + this.transform.name; ///For Debug
        Destroy(_colObj);
        Destroy(this.gameObject);

    }
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.name == plusname&&!_IsCol)
        {
            _colObj = collision.gameObject;
            _IsCol = true;
        }
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Timur2342
@Timur2342
OnColisionStay2D отвечает скорее за столкновения в каждом кадре, тебе нужен OnColisionEnter2D, он как раз и будет работать лишь один раз(https://ru.stackoverflow.com/questions/1274786/%D0...)
Ответ написан
Ваш ответ на вопрос

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

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