Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

241
Vistas
¿Cómo genero solo 1 manzana en colisión?

Soy nuevo en Unity como un todo y decidí crear un pequeño y simple juego de serpientes como prueba. Me las arreglé para crear movimiento, el problema ahora es que quiero comerme la manzana primero, luego esperar hasta que me coma la manzana y luego generar una nueva.

Hasta ahora logré hacer que esperara hasta que como la primera manzana, pero luego genera muchas manzanas a la vez, ¿cómo puedo hacer que espere hasta que como la manzana, luego genera una manzana y luego otra manzana hasta ahora y adelante.

Hice solo 1 desove de manzana en una ubicación determinada hasta ahora porque quería probarlo antes de desovar en otra ubicación.

Aquí está el código que tengo hasta ahora

 void OnTriggerEnter2D(Collider2D other) { Destroy(gameObject); } public void checkApple() { if (GameObject.Find("Apple")) { Debug.Log("The apple has not been eaten"); } else { Debug.Log("The apple has been eaten!"); GameObject a = Instantiate(Apple) as GameObject; a.transform.position = new Vector2(-10.26f, 3.66f); } } void Update() { checkApple(); }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Si bien existen mejores métodos para manejar su problema que buscar en toda la escena el nombre de un objeto, una solución a su problema se vería de la siguiente manera: Actualmente, crea una instancia de un nuevo Objeto después de destruir el anterior, mientras que su prefabricado u objeto podría llamarse "Apple", la nueva Instancia se llamará "Apple(Clone)" y como solo está buscando el objeto que se llama "Apple" y no un objeto que contiene el nombre Apple, nunca encontrará un objeto.

Para evitarlo, deberá establecer el nombre del objeto recién creado. Para eso solo necesitas renombrar el objeto creado

 if (GameObject.Find("Apple")) { Debug.Log("The apple has not been eaten"); } else { Debug.Log("The apple has been eaten!"); GameObject a = Instantiate(Apple) as GameObject; a.name = "Apple"; a.transform.position = new Vector2(-10.26f, 3.66f); }

Sin embargo, si su objetivo final es "crear una nueva manzana en una nueva posición", sería mejor simplemente mover el objeto a la nueva posición cuando su serpiente choca con la manzana, si no quiere que la manzana aparezca instantáneamente, puede crear un temporizador de enfriamiento algo como esto:

 void OnTriggerEnter2D(Collider2D other) { //when needed make sure that the snake only eats apples //if(other.name.Equals("Apple")){ //for a random position you could use // Apple.transform.position = new Vector2(Random.Range(-10.0f, 10.0f),Random.Range(-10.0f, 10.0f)); Apple.transform.position = new Vector2(-10.26f, 3.66f); Apple.SetActive(false); cooldown = 2f; inactiveApple = true; //} } public void checkApple() { cooldown -= Time.deltaTime; if(cooldown <= 0 && inactiveApple) { Apple.SetActive(true); inactiveApple = false; } }

Por supuesto, al final, primero deberá verificar si la nueva posición está ocupada por la serpiente antes de generarla allí, pero eso está fuera de tema.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar invocar para esperar;

 float waitingTime = 1f; void Start() { Spawn(); } void OnTriggerEnter2D(Collider2D other) { Destroy(gameObject); Invoke("Spawn", waitingTime); } void Spawn() { Debug.Log("The apple has been spawned!"); GameObject a = Instantiate(Apple) as GameObject; a.transform.position = new Vector2(-10.26f, 3.66f); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda