Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

240
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda