[Unity3D] Problemas con movimiento y deslizamiento del coche

starfucker

Buenas,

He empezado a rehacer un juego que hicimos unos colegas en un motor propio y lo estamos pasando a unity.
La cosa esta en que he creado el coche con un cubo con rigidBody y las ruedas con wheelColliders.

La pregunta esta en lo siguiente:
Después de la configuración de un par de días con las ruedas, ya aparenta un poco decente, pero tengo varios problemas a ver si me los podéis solucionar.

1 - Le falta arrancada a la hora de acelerar, le cuesta bastante salir
2 - También tengo problemas porque va deslizando sobre el terreno.

Los datos los tengo asi:
La escena

Las ruedas

El coche

EnderFX

Hace mucho que no toco nada 3d ni WheelColliders, y seguramente no te sirva de nada, pero voy a preguntar algo obvio y un poco absurdo...

¿Has mirado en tus colliders el physics material utilizado, que no tenga friction: 0? Lo digo por el tema que comentas de que parece que resbala y le cuesta salir, aunque posiblemente con friction: 0, en función de cómo estés aplicando fuerzas sobre el rigidBody, ni aceleraría, imagino.

1 respuesta
B

Eso no es un coche, con 3000 kilos de masa en el rigidbody es más bien un camión, normal que deslice y no tenga reprís...

Usa unidades reales... 1 = metro

2 respuestas
starfucker

#2 Tengo puesto en el material del suelo una friccion de 0.8 (porque es un valor 0-1, verdad?)

#3 tenia problemas con la suspensión que si le bajaba peso se volvia la conduccion inestable y parecia que estuviese vibrando o algo similar

La cosa que no tengo mucha idea en estos temas de unity y no se si lo tengo todo bien configurado o me falta algun tipo de elemento en el conjunto.
La programacion del script del coche lo que hago es ejercer la potencia del motor * el valor del input a modo de

wheelcollider.motortorque = maxMotor * inputValue

Esa es la manera que lo hacian en los tutoriales de unity

voltumel

Probaste poniendo la colisón en Continua?

1 respuesta
starfucker

#3 Le he metido de masa 700 y si que es verdad que ahora va mas ligero pero no termina de tener aceleración. Es posible que sea el mismo problema el del deslizamiento con el de la salida. Si patina al acelerar no sale con fuerza :thinking:

#5 Si, y aun así, parece que vaya sobre hielo :pensive:

Me apuesto lo que sea a que es una tontería gordisima

1 respuesta
B

Ahora que recuerdo, Wheel Collider no interactúa con la física de los materiales. Hay que ajustar manualmente y mediante script para simular diferente agarre en diferentes superficies.

La fricción la defines con los parámetros de Forward y Sideways Friction... del componente wheel collider.

Forward es la fricción longitudinal, la que genera la rueda al girar sobre su eje.

Sideways la lateral, al soportar cargas laterales.

También debes tener en cuenta que no es lo mismo tracción delantera que trasera. Si usas trasera debes repartir el centro de gravedad hacia atrás, más o menos 40% vs 60%.

Otro... en la suspensión spring y damper están co-relacionados, no recuerdo el porcentaje y también dependen de la masa. El spring es la fuerza del muelle que sostiene la masa suspendida del vehículo, damper es el amortiguador y reduce la velocidad a la que se mueve la suspensión. Si vibra demasiado aumenta el damper.

Desplaza el centro de gravedad hacia atrás, si es tracción trasera, para mejorar el agarre en la salida, o hacia delante si es delantera.

3 2 respuestas
pirri1721

#7 como se nota quien hizo un juegazo del tema y quién sólo ha hecho el mono con ello xD

3
starfucker

#7 Si, he visto que el Stiffness no es un valor 0 - 1
Si le subo el valor a mas de 1 de sideways el coche no para de girar como loco

Lo del tema del centro de masas no se como modificarlo. Que seria, algún transform que tenga el coche en algún lado?
Lo había puesto en tracción a las 4 para evitar problemas de agarre, pero habiendo un centro de masas, quizá seria buena idea bajarlo también.
El tema de la suspensión lo tengo bastante bien configurado en cuando a la respuesta que da. Spring seria la longitud máxima de la suspensión y Damper seria mas o menos el tiempo de reacción de los muelles para contraerse y expandirse. A un valor muy bajo de Damper la suspensión parece un muelle loco xDD

1 respuesta
B

#9 Para desplazar el centro de gravedad puedes hacerlo de varias formas... si estás aprendiendo la mejor práctica es usar composición de colliders, agrega otro collider como hijo y sácalo del centro.

editado: te aconsejaría bajar los standard assets para trastear de cero desde algo ya configurado...

PD: si quieres mayor precisión y ajuste tipo simulación tendrás que crear tus propios componentes con formulación Pacejka

1 respuesta
starfucker

#10 Voy a ver la configuración con los standard assets de los coches a ver como están.

#10gear64:

composición de colliders

¿Collider o RigidBody?
Tampoco es que quiera una conducción 100% real. Es un juego de karts estilo Crash team racing y tampoco es que tenga que ser algo totalmente real.

3 respuestas
B

#11 un Rigid con varios colliders... hijos

pirri1721

#11 Mi experiencia de mono con el asunto, q supongo q no sirve para aportar nada esta aquí debug, es que cuanto más te acercas a un caso d euso real, mejor se comporta el sistema
Desde los pares de fuerzas del motor hasta el peso, si cambias cualquier valor de un coche bien configurado, se va a la mierda TODA la configuración.
Todo desde la barra dl bar, pero en su momento ojeé un puñado de assets de bastante nivel en lo q a coches se refiere, y aunque el modelo de las wheels colliders de Unity te invita a pensar que se puede montar fácil, lo juegos de conducción tienen muchísima lógica embebida para corregir desajustes de fuerzas que (aunque realistas) no ofrecen el feedback que quieres al jugador
Algo tan sencillo en apariencia como un ABS, lo menos son 100-200 líneas de código

1 2 respuestas
starfucker

#13 si, si ya se que los temas de conducción al final un desajuste hace que se vaya todo a tomar por culo, pero lo veo por ejemplo si es que vuelca el coche a tope, o tiembla o cosas similares.
Pero que vaya patinando pensaba que seria alguna cosa que tendría que configurar de fricciones o algo así :thinking:

2 respuestas
B

#13 +1

#11 al agregar varios colliders al mismo RigidBody, el engine hace el reparto y calcula el centro de gravedad por si mismo. Desplaza un segundo collider hijo fuera del centro y listo.

edit: #14 el agarre es un conjunto, una balanza. Si tienes valor de máximo agarre en las cuatro ruedas... pero el centro de gravedad desplazado hacia una de ellas, esto genera un agarre efectivo superior en esa y hará deslizar el resto.

1 respuesta
pirri1721

#15 Lo que comenta al final... a veces intetamos fiarnos de la geometría de pivotes que trae un modelo y en realidad no están bien y te cargan una rueda todo el rato... es un coñazo de artesanía y eso sabiendo lo que haces, que no era mi caso xD

B

Probable que el problema de agarre "en general" lo tengas en los valores de Extremum y Asymptote que son los que definen la curva de agarre.

Dejé de usar Wheel Collider porque tiene incongruencias a la hora de combinar deslizamientos lateral vs longitudinal. Opté por crear componentes propios.

Para evitar el vuelco fácil, baja la altura del centro de gravedad o agrega una fuerza extra.

1 respuesta
starfucker

#17 a ver primero me gustaría conseguir que no patinase como el hielo. Quizá cuando vea los assets veo la luz y lo arreglo. Sino quizá me plantee cambiar el sistema y busque otro tipo para el coche

starfucker

@gear64 al final he optado por la opción de tomar los scripts del coche de los standard assets y partir de ahí eliminando cosas que no necesito.
La configuración que tienen montada esta bastante mas avanzada que la que dan en los tutoriales. Tenias razón, tienen un centro de masas modificado, le aplican una fuerza hacia el suelo para que no se desestabilice y mas cosas que merecen la pena para empezar desde ahí.

starfucker

Si el coche se va ligeramente hacia un lado es cosa del centro de masas o la de posición de las ruedas cierto? es como un carrito del mercadona, se va solo hacia la izquierda xD

1 respuesta
B

#20 tiene que ser completamente simétrica la izquierda vs derecha...

1 respuesta
kesada7

Yo solo vengo a decir que usé el componente ese de wheel collider 1 vez y casi tiro el pc por la ventana xDD Era para hacer algo sencillo en plan mario kart así que al final suprimir al proyecto y a tomar por culo! me pique algo sencillo con las físicas normales de Unity para hacer un controlador de coche básico sin nada de realismo pero que pudiera tener yo más control sobre él. Si quieres hacer algo realista en plan simulación supongo que guay pero sino no sé hasta donde merece la pena usarlo.

1 1 respuesta
starfucker

#21 Tendre que comprobar la simetria entonces, que quiza tenga alguna rueda desviada, o algun collider para el centro de masas

#22 Al final la mejor opcion es cogerte los scripts de ejemplo del manejo del coche que te vienen con los standard assets y partir de ellos, porque sino es una locura. En realidad los scripts son bastante sencillos pero para hacerlos de 0 puede ser una locura

Usuarios habituales