[Unity] Problema colision jugador

Kolonic
 private void OnCollisionEnter2D(Collision col)
    {
        if (col.gameObject.tag == "Ground")
        {
            isGrounded = true;
            Debug.Log(isGrounded);
        }
    }

No funca, alguna idea? El moñeco me hace el primer salto, pero la variable isGrounded no cambia al tocar de nuevo el suelo. :/

Hukha

#1 No entiendo exactamente que problema hay, pero lo que yo suelo hacer es un OnTriggerEnter y a mis suelos les pongo un objeto vacío con un collider que se sale por encima

adriancin

Entra al OnCllision? Pon un punto de ruptura dentro o un Debug.Log para saberlo.

1 respuesta
Hukha

Es

col.collider.tag

no

col.gameObject.tag

@Kolonic

1 respuesta
Kolonic

#3 No entra.

#4

col.collider.tag

esta obsoleto

B

Por qué private?

1 respuesta
Kolonic

#6 Pues he mirado y lo tengo publico, no se en que momento lo he cambiado xD

public void OnTriggerEnter2D(Collider2D col)
    {
        Debug.Log("ENTRA!");
        if (col.gameObject.tag == "Ground")
        {
             isGrounded = true;
            Debug.Log(isGrounded);
        }
    }

Estoy probando con un OnTrigger y tampoco, con el OnCollision me dice que necesita un parámetro de tipo Collider2D, que como veis ya uso. Me quedo lokaso

1 respuesta
AngelRc

#1
Objeto1 - Collider2D
Objeto2 - Collider2D + tick en el trigger.

Uno de los 2 tiene que tener un RigidBody2D (o ambos).

col.gameObject.tag es correcto.

1 respuesta
B

Tienen los 2 un collider?

1 respuesta
txandy

uno de los dos elementos necesita un rigidbody2d + collider 2d y el otro un collider 2d, puede ser eso

1 respuesta
Hukha

#7 Lo de que sea Private es normal, por defecto todas se ponen en private

Y en principio

collider.tag

no es obsoleto, vamos, lo tengo funcionando sin aviso ni nada
Lo raro es que ni te entre al Trigger ni nada

1 respuesta
Kolonic

#8 #9 #10 #11 El Player tiene Collider2d + RigidBody2d y el suelo Collider2d

1 respuesta
totespare

A mi me pasó algo parecido en la jam, cuando salga del bo te lo miro. Usa el compareTag de todas formas, tengo entendido que es mejor.

B

No se si lo estás enfocando mal.

No se supone que es el collider del personaje al que entra al del suelo, el cual tiene el trigger? entonces porque compruebas que tiene tag Ground y no Tag player?

Hukha

#12 El RB no puede estar en Kinematic, quizá ese es el problema

Kolonic

Solucionado, fijaos en #1

private void OnCollisionEnter2D(Collision col)

Debería ser

private void OnCollisionEnter2D(Collision2D col)

Perdón por el retraso, pero no os habíais dao cuenta eh cabrones!

Gracias por la ayuda <3

PD: Si es en 3D es Collider en vez de Collision? Curioso

adriancin

Y no te devolvía ningun Warning ni Error? eso si que es raro, que uses un método con un párametro de entrada que no es y no pete

1 respuesta
Kolonic

#17 No. He de decir que tengo Unity desactualizado, podría ser por eso xD

1 respuesta
adriancin

#18 Qué versión? 4.1? jajaja

B

#1 Un vistazo son 10 minutos y no viene de más... https://docs.unity3d.com/es/current/Manual/CollidersOverview.html

collision vs trigger

B

#1 perdon pero no quiero abrir un hilo nuevo para esta pregunta.

que tal el collision2d para un platformer? esta basado en apply force? por lo que he visto la gente q entiende siempre hace su propio sistema de colisiones y fisicas con raycast y a mano porq dicen q es muy chapucero lo que ofrece unity a no ser que vayas full 3d. cual es tu experiencia?

1 respuesta
kesada7

#21 Pues no sé que pros dicen eso de que pueden implementar unas físicas en unity mejor que las que ya vienen desarrolladas por ingenieros del equipo del motor y que llevan años siendo testeadas y mejorandolas... salvo para algún caso raro que quieras hacer algo con físicas muy peculiar... pero es que no sé incluso para eso puedes hacer y configurar lo que quieras con las que ya te dan y aplicar tu propias fórmulas luego mediante código. Y para un plataformer de sobra...

1 respuesta
B

Cuando toques slopes lo verás, pero bueno de esto hace tiempo así que es posible que ahora no esté tan mal

Drhaegar

#22 ¿Lo dices en serio o estas trolleando?

1 respuesta
B

#24 para nada xd siempre he escuchado que para pixel perfect collisions el motor que te hace el unity2d no es demasiado bueno; pero vamos puede que me equivoque, por eso preguntaba

Usuarios habituales