Noticias

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

FPSController se desliza en plataforma movil

Iniciado por JotaErre, Julio 13, 2017, 12:38:08 PM

Tema anterior - Siguiente tema
Hola a todos!!
 
Un problemilla tengo con el uso de CharacterController en superficies influenciadas por fuerzas aplicadas a un rigidbody. Obserbando como actua un Rigidbody con isKinematic activado, he emparentado el FpsController a la superficie mobil. Esto funciona bien con las rotaciones. Pero al moverse la plataforma horizontalmente el FpsController queda inmovil creando un efecto de deslizamiento.
 
¿Alguna idea?

En plataformas móviles, se suele emparentar el actor al transform de la plataforma. No se utiliza físicas.

O podes enparentar(tene cuidado con las escalas porque se transmiten de padres a hijos) o podes detectar que la plataforma es movil, yo generalmente detecto si el suelo es static = false y o si esta en layer "plataforma", tomar el delta de posicion y aplicarlo siempre a tu charactercontroller, simplemente es un "fuerza" mas que influencia tu movimiento, por ej: gravedad + WS + AD + plataforma

Prueba superada!!
 
Sin el Character Controller los Rigidbody con isKinematic se comportan como deben emparentados con un objeto. En el caso de añadir CharacterController este se moverá mediante el la función "ChraracterController.move( Vector3 );" . En el caso del script incluido en "Standard Assets"  será "m_CollisionFlags = m_CharacterController.Move(m_MoveDir * Time.fixedDeltaTime);" Para que se mueva junto al objeto sin moverse he sumado la velocidad del objeto emparentado "m_CollisionFlags = m_CharacterController.Move((m_MoveDir + transform.parent.GetComponent<Rigidbody>().velocity) * Time.fixedDeltaTime);"
 
Muchas gracias por las respuestas!

Etiquetas: