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

377
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

0

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

over 4 years ago · Santiago Trujillo Denunciar

0

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

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