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.
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.
En el editor, no use isTrigger para ambos objetos. Úselo solo para uno.
Intente usar la void OnTriggerEnter(Collider collider){ ... } .