Noticias

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

asignarle tiempo a un movimiento

Iniciado por Goex, Julio 23, 2015, 10:17:48 PM

Tema anterior - Siguiente tema
Buenas.... estoy haciendo un juego al estilo metal slug 5 / contra .... quiero implementar el dash al personaje, pude dejarlo que haga el dash con el personaje mirando adelante (o sea ,durante el dash no podemos girarlo) y la distancia a recorrer...... el problema es que lo hace todo en 1 segundo, si le digo que avanze 2 metros los hace en 1 seg, pero si le digo que haga 30 metros, tmb los hara en ese tiempo........ digamos que quiero que haga por ejemplo 5 metros pero no en 1 segundo, sino que tarde 3 segundos en recorrer esa distancia.... este es el codigo que tengo de momento para el dash public var dashDistance : float = 25.0;
    private var counter = 0;
    private var isDashing = false; if (Input.GetButton ("Fire2")) {
              isDashing = true;                                         
                            }
               if(isDashing){
              var forward : Vector3 = transform.TransformDirection(Vector3.forward);
     var curSpeed : float = 3.0 * dashDistance;
     controller.SimpleMove(forward * curSpeed );
 
     counter++;
 }
 
 if(counter > 15){
     isDashing = false;
     counter = 0;
  } el personaje tiene un character controller y un box collider  ... 

Agosto 05, 2015, 08:23:14 PM #1 Ultima modificación: Agosto 05, 2015, 08:33:12 PM por ProgramacionWH
en vez de;counter++;counter += Time.deltatime; //Counter valdra el tiempo que estas haciendo el dashen vez de  :var curSpeed : float = 3.0 * dashDistance;
controller.SimpleMove(forward * curSpeed );
controller.SimpleMove(forward * dashDistance / time.deltaTime ); //Movemos dashDistance pero dividido entre time.deltaTime (Para igualar Update y Segundos reales),esto es dificil de entender si no estas familiarizado , es cuestion de ponerse un rato y entenderlo, a modo de resumen ->  time.deltaTime es una "cte" que vale 1 / Updates por segundoen vez de:if(counter > 15){if(counter > segundos){ //Comprobamos si el tiempo que esta haciendo el dash ha superado el tiempo que queremos (Tiene que acabar)
 Un saludo

Visita http://www.programacionwh.com encontraras tutoriales y muchas cosas .


Tambien puedes visitar mi canal de YouTube https://www.youtube.com/channel/UClSCTn0wPN1iFjED0yaoJUA



Etiquetas: