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

369
Visualizações
El objeto en Unity no se activará, aunque los colisionadores y el código son correctos

Desde hace casi una semana estoy probando Unity para hacer juegos. El problema es el siguiente: tengo un enemigo y un círculo alrededor del jugador, ambos tienen un colisionador con IsTrigger activo. En el código, hay un evento OnTriggerEnter y OnTriggerExit para el enemigo. Si el enemigo entra en el círculo del jugador, un bool se vuelve verdadero y deberían suceder otras cosas. Pero solo sucede esto: el enemigo entra directamente en el jugador y solo entonces el bool se vuelve verdadero (lo probé muchas veces y esto es todo) aunque el jugador en sí no tiene un colisionador, solo el círculo alrededor de él (el jugador tiene, por supuesto, un controlador de personajes, pero esto no puede ser un disparador, ¿o sí?)

El enemigo tiene una IA simple y siempre camina en la dirección del jugador, por lo que tal vez solo se activa cuando él está allí. Porque esto es lo que parece suceder. El código está aquí:

 public GameObject thePlayer; public GameObject theEnemy; public float enemySpeed = 0.01f; public bool attackTrigger = false; public bool isAttacking = false; void Update () { transform.LookAt(thePlayer.transform); if (attackTrigger == false) { enemySpeed = 0.01f; theEnemy.GetComponent<Animation>().Play("walk"); transform.position = Vector3.MoveTowards(transform.position, thePlayer.transform.position, enemySpeed); } if (attackTrigger == true && isAttacking == false) { enemySpeed = 0; theEnemy.GetComponent<Animation>().Play("attack"); StartCoroutine(InflictDamage()); } } void OnTriggerEnter() { attackTrigger = true; } void OnTriggerExit() { attackTrigger = false; } IEnumerator InflictDamage() { isAttacking = true; yield return new WaitForSeconds(1.1f); GlobalHealth.currentHealth -= 5; yield return new WaitForSeconds(0.2f); isAttacking = false; }

Este Código en realidad pertenece a Jimmy Vegas. Estoy aprendiendo de su tutorial de YouTube y en su video funcionó bien. Por eso estoy tan confundido.

Editar: El enemigo ignora a mi reproductor. Incluso cuando agrego el colisionador al reproductor mismo, no se activará. Si tengo el IsTrigger del enemigo apagado, simplemente me aleja. No sé qué es esto.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnTriggerStay.html

"Los eventos de activación solo se envían si uno de los colisionadores también tiene un cuerpo rígido adjunto"

Ambos GameObjects deben contener un componente Collider. Uno debe tener Collider.isTrigger habilitado y contener un Rigidbody.

over 4 years ago · Santiago Trujillo Relatório

0

En el editor, no use isTrigger para ambos objetos. Úselo solo para uno.

over 4 years ago · Santiago Trujillo Relatório

0

Intente usar la void OnTriggerEnter(Collider collider){ ... } .

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