Noticias

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

Problema con el salto de mi Cubo Unity3

Iniciado por eder, Septiembre 02, 2016, 12:02:13 AM

Tema anterior - Siguiente tema
Estoy creando un pequeo juego y en una parte hay un cubo que salta y tu lo controlas con el teclado el salto
 
Cuando salta desde el suelo no pasa nada todo correcto pero al subirse a un objeto y luego le das tu a saltar, el cubo pega un salto demasiado grande e incoerente porque deberia saltar exactamente igual que si salta desde el suelo y no se porque pasa porque metodo de saltar solo hay uno y es muy basico solo le aplico una fuerza en el eje "y" y ya esta.
 
 

Addforce tiene unas opciones más, no muchas pero alguna más. A ver el código?

Septiembre 02, 2016, 12:35:36 AM #2 Ultima modificación: Septiembre 03, 2016, 01:39:46 AM por pioj
     
 

  if (Input.GetKey(KeyCode.J) && enableJump)
        {
            enableJump = false;
            player.AddForce(new Vector3(0f, 100f, 0f) * jumpImpulse * Time.deltaTime);
            isJumping = true;
        }

 
si pongo GetKeyDown no pasa
 
pero eso no quiero porque yo quiero que si mantienes pulsado que siga saltando
 
 


si, solo te he pasado la parte que hace que el cubo salte
 
 

no esta claro como usas esos bool que pones ahi, talvez son los q te estan afectando si tienes otras condiciones y asignaciones fuera de ese codigo

A ver, el getkey para el proceso de push/release la tecla. Si quieres que sea en el push, getkeydown. Por otro lado, si le añades deltaTime será variable la fuerza del impulso. Por eso salta con distintas fuerzas.

Cierto, no me acordaba del deltaTime
 
Que otra opcion tengo para arreglar eso? porque si no pongo el deltaTime el cubo saltara diferente segun el dispositivo que corra el juego
 
 

Septiembre 04, 2016, 03:19:11 PM #8 Ultima modificación: Septiembre 04, 2016, 03:20:33 PM por kaito
Al rigidbody puedes añadir impulso de 4 formas diferentes(ForceMode): https://docs.unity3d.com/ScriptReference/ForceMode.html
 
Utilizando ForceMode.Velocity, solo debes añadir la velocidad necesaria. La velocidad necesaria = Velocidad - VelocidadActual.
 
Es decir, si quieres una velocidad de salto(0,3,0), la velocidad necesaria = (0,3,0) - Rigidbody.velocity. Sería, Rigidbody.AddForce((0,3,0)-Rigidbody.Velocity,Forcemode.Velocity)
 
Aunque, también, lo más cómodo y sencillo es mani***r directamente Rigidbody.velocity, es decir, aplica directamente Rigidbody.velocity = (0,3,0)

y lo meto todo en el fixedUpdate no? todo lo que sea de trabajar con el rigidbody
 
para que no afecte a la fluidez en los distintos dispositivos no?
 
 

Etiquetas: