Jump to content
Sign in to follow this  
Trent H

Problema al instanciar un Prefab.

Recommended Posts

Hola a todos,

Estaba creando un proyecto en 2D dónde el player tiene dos objetos en la escena. Mi idea era que cogiera el primero y para coger el segundo dejara en el sitio de éste el primero y se llevara el nuevo objeto. Para ello tengo dos variables GameObject (currentWeapon para el arma y currentItem para el item del arma). Para coger el primer objeto no hay problema pero al recoger el segundo y dejar el primero instancio el ítem, pero me crea dos objetos en lugar de uno, y si lo vuelvo a instanciar me crea cuatro. No sé si el error en el frame que me instancia dos veces.

private void OnTriggerStay2D(Collider2D other)
{
    if (other.tag == "WeaponItem")
    {
        Debug.Log("has encontrado un arma");
        if (Input.GetKeyDown(KeyCode.Q))
        {
            if (currentItem != null)
            {
                Debug.Log("Cambiar arma");
                currentWeapon = other.GetComponent<WeaponRecollect>().weaponPrefab;
                state = PlayerState.WEAPON;
                Destroy(other.gameObject);

                Invoke("SetItem",0.5f);
                Debug.Log("ItemCreado");

                StartCoroutine("GetItem");
            }
            else
            {
                Debug.Log("Recoger arma");
                currentWeapon = other.GetComponent<WeaponRecollect>().weaponPrefab;
                state = PlayerState.WEAPON;
                Destroy(other.gameObject);
                StartCoroutine("GetItem");
            }
        }
    }
}
IEnumerator GetItem()
{
    yield return new WaitForSeconds(0.5f);
    currentItem = currentWeapon.GetComponent<WeaponsControl>().itemPrefab;
}
public void SetItem()
{
    GameObject newItem = Instantiate(currentItem, transform.position, Quaternion.Euler(0, 0, 0));
    //currentItem = null; <- Si dejo esta instrucción, no me duplica la instancia pero me genera un mensaje de error en la consola porque no instancia el objeto de la variable. No sé como decirle que sólo instancie un ítem. Un saludo
}


image.png

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...