Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda instanciar GameObject

Iniciado por Null, Septiembre 02, 2016, 08:24:05 PM

Tema anterior - Siguiente tema
Hola.
 
Estoy tratando de hacer un spawn simple de comida,

el cual instancie comida cada 5 segundos,

pero no sé como indicar que si el spawn point ya está ocupado,

que no instancie nada.
 
 
 
Como se ve en este código intenté hacer uso de mí mismo, del null y tal,

pero no me lo tomó.
 
 
 
Algún corazón apasionado que me ayude?

Aquí va mi noob-code:
 

using UnityEngine;
using System.Collections;
public class ComidaSpawn : Monobehaviour
{
  float _t = 0f;
  public Transform posicionComida;
  public GameObject comida;
  void Start()
  {
    posicionComida = GameObject.Find("ComidaSpawn1").transform;
  }
  void Update()
  {
    _t += 1f * Time.deltaTime;
    if (_t >= 5f)
    {
      _t = 0f;
     
      if (posicionComida == null)
      {
        Instantiate(comida, posicionComida);
      }
    }
  }
}

 
Por cierto, ya sé que 'posicionComida' nunca es == null,

lo que pasa es que lo escribí así aquí para que vieran el ejemplo.

Ese bloque de IF de hecho ni lo tengo en mi código real en Unity, so no problem.
 


Bueno, recuerden que lo que pregunto es cómo hacer que si la zona ya está ocupada, no instanciar nada!

Pos mu facil, puedes guardar el objeto instanciado y luego comprobar si la variable esta vacia,cuando coja la comida pues destroy al objeto y quedara vacia de nuevo.
 

if (comidaObject == null)
      {
       comidaObject = Instantiate(comida, posicionComida);
      }

El problema que veo es que posicionComida es una Transform, nesecitas verificar si en esa transform hay o no un objeto (GameObject).

Si no te funciona lo del null, has pensado en utilizar una variable booleana, cuando lo instancies lo pones a true y cuando lo destruyas lo pones a false., y en el if cambias la condicion por la variable booleana.

Etiquetas: