Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

¿Qué está mal?

Iniciado por yhuj, Abril 22, 2017, 02:55:18 PM

Tema anterior - Siguiente tema


Hola comunidad, me he encontrado con este mensaje en la consola:
 


Script error: OnTriggerEnter
 


This message parameter has to be of type: Collider
 


The message will be ignored.
 


 
 


El juego se ejecuta, pero no funciona correctamente. He buscado información de qué trata el error, pero sigo sin entenderlo. Gracias de antemano.


http://answers.unity3d.com/questions/786852/script-error-ontriggerenter-1.html
 
http://answers.unity3d.com/questions/733586/script-error-ontriggerenter.html
 
http://answers.unity3d.com/questions/401075/ontriggerenter-gives-me-error.html
 
https://forum.unity3d.com/threads/oncollisionenter-error-message-parameter-has-to-be-of-type-collision.84828/
 
y puedo seguir jajaja
 
1 - subi todo tu script, al parecer es un error de nombres, pero si no subis lo que tenes no sirve de nada, no me interesa los mensajes ni lo que te diga la consola, si en un script le erras en una llave o una coma el compilador te puede llegar a decir que tenes 110 errores, si me subis los 110 errores me vuelvo loco, en cambio si me subis el script CON TODO te digo, "Ah mira te falto la coma"
 
2 - en google esta todo, simplemente copie el mensaje y lo busque
 
saludos


Tienes razón, mejor me explico. Quería desactiva y activar otro C# con triggers y tags. Es este el código:
 


using UnityEngine;
using System.Collections;
public class ejemplo : MonoBehaviour {
public enemySct _enemy;
void OnTriggerEnter(GameObject other)
{
   if(other.gameObject.CompareTag("tagA"))
   {
      _enemy.enabled = !_enemy.enabled;
   }
}
void OnTriggerStay(Collider other)
{
   if(other.gameObject.CompareTag("tagB"))
   {
      _enemy.enabled = !_enemy.enabled;
   }
}
void OnTriggerExit(Collider other)
{
   if(other.gameObject.CompareTag("tagB"))
   {
      _enemy.enabled = !_enemy.enabled;
   }
   if(other.gameObject.CompareTag("tagA"))
   {
      _enemy.enabled = !_enemy.enabled;
   }
}
}

 
 

En ontrigger enter pusiste un gameObject de argumento, pone un Collider

Cita de: lightbug date=1492867773http://answers.unity3d.com/questions/786852/script-error-ontriggerenter-1.html
   
   
      http://answers.unity3d.com/questions/733586/script-error-ontriggerenter.html
   
   
      http://answers.unity3d.com/questions/401075/ontriggerenter-gives-me-error.html
   
   
      https://forum.unity3d.com/threads/oncollisionenter-error-message-parameter-has-to-be-of-type-collision.84828/
   
   
      y puedo seguir jajaja
   
   
      1 - subi todo tu script, al parecer es un error de nombres, pero si no subis lo que tenes no sirve de nada, no me interesa los mensajes ni lo que te diga la consola, si en un script le erras en una llave o una coma el compilador te puede llegar a decir que tenes 110 errores, si me subis los 110 errores me vuelvo loco, en cambio si me subis el script CON TODO te digo, "Ah mira te falto la coma"
   
   
      2 - en google esta todo, simplemente copie el mensaje y lo busque
   
   
      saludos
   

Cita de: lightbug date=1492867773http://answers.unity3d.com/questions/786852/script-error-ontriggerenter-1.html
   
   
      http://answers.unity3d.com/questions/733586/script-error-ontriggerenter.html
   
   
      http://answers.unity3d.com/questions/401075/ontriggerenter-gives-me-error.html
   
   
      https://forum.unity3d.com/threads/oncollisionenter-error-message-parameter-has-to-be-of-type-collision.84828/
   
   
      y puedo seguir jajaja
   
   
      1 - subi todo tu script, al parecer es un error de nombres, pero si no subis lo que tenes no sirve de nada, no me interesa los mensajes ni lo que te diga la consola, si en un script le erras en una llave o una coma el compilador te puede llegar a decir que tenes 110 errores, si me subis los 110 errores me vuelvo loco, en cambio si me subis el script CON TODO te digo, "Ah mira te falto la coma"
   
   
      2 - en google esta todo, simplemente copie el mensaje y lo busque
   
   
      saludos
   

Cita de: lightbug date=1492874407En ontrigger enter pusiste un gameObject de argumento, pone un Collider
   


 
 
Ok, gracias. Una segunda duda, ¿Por qué el _enemy.enabled = !_enemy.enabled; no me funciona? Se me queda activado todo el rato. Me he asegurado de que el trigger funciona correctamente con un Debug.Log. Así que el error no pude ser eso.

Abril 22, 2017, 06:32:20 PM #5 Ultima modificación: Abril 22, 2017, 06:44:32 PM por lightbug
Cita de: yhuj date=1492877628Ok, gracias. Una segunda duda, ¿Por qué el _enemy.enabled = !_enemy.enabled; no me funciona? Se me queda activado todo el rato. Me he asegurado de que el trigger funciona correctamente con un Debug.Log. Así que el error no pude ser eso.
   


_enemy es una referencia a un componenete qque en ningun momento asignaste. Podes crear dentro de tu clase un OnEnable/Awake/Start y asignarla con GetComponent (voy a suponer que _enermy y ejemplo estan en el mismo gameObject)
 

void Awake()
{
_enemy = GetComponent<enemySct>();
}

 
casi seguro estas teniendo nullreference (las rojitas) y no les estas dando bollilla, lo que pasa es que te esta diciendo que queres tocar algo de la referencia esa (el enabled) y no la tenes asignada, osea es null.
 
EDIT!!
 
AHH aguantaaa no vi que era public! jajaj, si la asignaste por el inspector esta todo bien

Cita de: lightbug date=1492878740_enemy es una referencia a un componenete qque en ningun momento asignaste. Podes crear dentro de tu clase un OnEnable/Awake/Start y asignarla con GetComponent (voy a suponer que _enermy y ejemplo estan en el mismo gameObject)
   
   

void Awake()
{
_enemy = GetComponent<enemySct>();
}

   
      casi seguro estas teniendo nullreference (las rojitas) y no les estas dando bollilla, lo que pasa es que te esta diciendo que queres tocar algo de la referencia esa (el enabled) y no la tenes asignada, osea es null.
   
   
      EDIT!!
   
   
      AHH aguantaaa no vi que era public! jajaj, si la asignaste por el inspector esta todo bien
   


Si esta bien no lo entiendo, ¿Por qué no se me desactiva y activa el otro C#?

Cita de: yhuj date=1492879916Si esta bien no lo entiendo, ¿Por qué no se me desactiva y activa el otro C#?
   


Ahora que lo veo "mas mejor" tenes en Stay otro conmutador, es decir que lo estas activando en un cuadro y desactivandolo en el otro. Anda de a poco, saca los otros tag, quedate con el A , saca el stay, lo vas a usar para el 0.02% de los casos, manejate solo para probar con Enter, cada vez que entras deberia conmutar, volves a salir y entras devuelta.

Cita de: lightbug date=1492880209Ahora que lo veo "mas mejor" tenes en Stay otro conmutador, es decir que lo estas activando en un cuadro y desactivandolo en el otro. Anda de a poco, saca los otros tag, quedate con el A , saca el stay, lo vas a usar para el 0.02% de los casos, manejate solo para probar con Enter, cada vez que entras deberia conmutar, volves a salir y entras devuelta.
   


Definitivamente, problema solucionado. Gracias por toda la ayuda lightbug.

Etiquetas: