Jump to content
Sign in to follow this  
Rddleo

problema detectando colisiones

Recommended Posts

hola muy buenas otra vez, esta vez tengo un problema con la funcion OnCollisionEnter(), quiero hacer que cuando el coche del jugador se choque contra otro coche se reinicie la pantalla, pero o no me detecta la colision o no tengo bien puesta la funcion de reinicio, pero creo que es mas lo primero. os dejo el codigo y si le veis algun fallo si podeis me lo decis. Un saludo.

 

le he añadido al jugador y al prefab de los coches que vienen de frente la box collider2d, y al jugador rigid body2d, probe a ponerle tb rigid body2d a los otros coches pero tampoco funcionaba asi que se lo quite

 

 private void OnCollisionEnter2D(Collision2D collision)
    {
        this.reinicio();
    }
   public void reinicio()
    {
        SceneManager.LoadScene("SampleScene");
    }

 

Edited by Bamf
Usa "<>" al pegar o escribir código. Saludos.

Share this post


Link to post
Share on other sites
3 hours ago, Rddleo said:

pero creo que es mas lo primero

siempre probá las cosas por separado (siempre que tengas un problema, claro está), si no estás seguro meter todo de golpe solo te va a confundir. Por ej corre en una instrucción solo el LoadScene, para el onCollisionEnter hace un Debug.Log o print que diga "anda el on collision" , que se yo.

Si el nombre de la escena es exactamente así, debería estar bien. Lo del OnCollisionEnter quizás sea, porque uno (por lo menos) de los dos debe tener un rigidbody, fijate la tabla de colisiones del manual. https://docs.unity3d.com/Manual/CollidersOverview.html

También verificá que: 1 -  las capas que tengan los objetos estén preparadas para colisionar entre ellas y 2 - que el objeto que tenga el mensaje OnCollisionEnter tenga el boxCollider2d (y que no sea un padre vacío o cosas así).

  • Like 1

Share this post


Link to post
Share on other sites

Yo estoy detectando las colisiones y en un objeto utilizo un boxcollider2d + rigid2d, en el otro solo el boxcollider. El objeto donde chocan los sprites es un rigidbody2d de tipo 'kinematic' y su boxcollider2d tiene la opcción 'is trigger' activada, y el sprite que es quien se mueve y choca, tiene un boxcollider2d también con trigger activado, ambos en el mismo tag, si no no se detectan.

Share this post


Link to post
Share on other sites
5 hours ago, Argantonio said:

su boxcollider2d tiene la opcción 'is trigger' activada

Si tiene eso no creo que te ande on collision, (quizás sí OnTrigger) fijate del manual:

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

Dice:

OnCollisionEnter is called when this collider/rigidbody has begun touching another rigidbody/collider. [Hasta aca bien]

In contrast to OnTriggerEnter, OnCollisionEnter is passed the Collision class and not a Collider. The Collision class contains information about contact points, impact velocity etc. If you don't use collisionInfo in the function, leave out the collisionInfo parameter as this avoids unneccessary calculations.

---> Note: Collision events are only sent if one of the colliders also has a non-kinematic rigidbody attached. Collision events will be sent to disabled MonoBehaviours, to allow enabling Behaviours in response to collisions.

Notar que de la misma tabla, no es posible disparar el mensaje entre kinematic rigidbodies, solo un kinematico vs un NO kinemático, me olvide de mencionarlo anteriormente.

 

5 hours ago, Argantonio said:

ambos en el mismo tag, si no no se detectan.

el tag no hace nada, tampoco las capas por si mismas, vos podés decir que capa choca con cual (via Layermask o matriz de colisiones), pero el tag ni pincha ni corta.

Edited by lightbug
  • Like 1

Share this post


Link to post
Share on other sites
23 hours ago, Rddleo said:

 private void OnCollisionEnter2D(Collision2D collision)
    {
        this.reinicio();
    }
   public void reinicio()
    {
        SceneManager.LoadScene("SampleScene");
    }

 

Por ahi ya te lo dijieron pero es probable que este usando dos cuerpos Kinematicos, con OnCollisionEnter esto no funciona, tal vez sea mas facil usar el OnTriggerEnter.

Share this post


Link to post
Share on other sites
20 hours ago, lightbug said:

el tag no hace nada, tampoco las capas por si mismas, vos podés decir que capa choca con cual (via Layermask o matriz de colisiones), pero el tag ni pincha ni corta. 

En mi proyecto, que es el primero que hago, todo sea dicho, si no tienen el mismo tag no funcionan, y esto ocurre porque así lo tengo asignado en los scripts... Yo lo unico que he hecho es ponerle un ejemplo de como funciona en mi proyecto, no pretendía dar consejos como 'experto' ni nada parecido. Un saludo!

 

Share this post


Link to post
Share on other sites
6 hours ago, Argantonio said:

En mi proyecto, que es el primero que hago, todo sea dicho, si no tienen el mismo tag no funcionan, y esto ocurre porque así lo tengo asignado en los scripts.

Ok :91_thumbsup:

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...