Comunidad de diseño web y desarrollo en internet online

Como lograr mayor fluidez en movimiento

Citar            
MensajeEscrito el 26 Feb 2015 01:50 am
Hola gente, este es mi primer post, ojala puedan ayudarme :)
Estoy entrando en el mundo del ActionScript, algunas cosas me cuestan mucho y de hecho no las entiendo :S

Mi problema de hoy es que, puedo hacer que mi "personaje" se mueva. Pero se mueve muy forzado. Y al momento de cambiar de direccion se trava. Me gustaria que el movimiento sea un poco mas fluido, principalmente en el cambio de direccion.

Se me ocurrio hacer un timer que cuando apretas una tecla se activa y que cada X tiempo el personaje se mueva hacia una direccion, hasta que el usuario suelte la tecla, cuando el usuario la suelta ya no se mueve en esa direccion.
Logre un poco mas de fluidez en el movimiento, pero el problema esta cuando cambio de direccion, tiene una pequeña trava y se queda quieto durante 1 segundo (aproximadamente).

Alguna recomendacion para arreglar este problema?
Les dejo el proyecto y el codigo a continuacion, muchas gracias!


[flash width=750 height=450]http://img110.xooimage.com/files/9/6/9/shooter-4a19af6.swf[/flash]


Por cierto, ignoren los numeros, los puse solo para revisar algo. Lo importante es el cuadrado verde.

Código ActionScript :

package
{
   import flash.display.MovieClip;
   import flash.events.KeyboardEvent;
   import flash.text.TextField;
   import flash.utils.Timer;
   import flash.events.TimerEvent;

   
   public class Main extends MovieClip
   {
      var Tiempo:int;
      var i:int;
      var timer:Timer= new Timer(5);
      var Apretando:Boolean = false;
         
         public function temporizador()
         {
         timer.start();
         timer.addEventListener(TimerEvent.TIMER,Tiempo2);
         }
         
         function Tiempo2(tiempoevent:TimerEvent)
         {
         Tiempo++;
         Texto.text = Tiempo.toString();
         }
      
         public function Teclado():void
         {
         stage.addEventListener(KeyboardEvent.KEY_DOWN, TeclaAbajo);
         stage.addEventListener(KeyboardEvent.KEY_UP,TeclaArriba);
         }
         
         public function TeclaArriba(teclado:KeyboardEvent):void
         {
            Apretando=false;
            i=0;
            Tiempo=0;
         }
         
         public function TeclaAbajo(teclado:KeyboardEvent):void
         {      
               
               temporizador();
               Apretando=true;
               
               if(teclado.keyCode == 37&&i<Tiempo) //izquierda
               {
                Personaje.x=Personaje.x-5;
               i++;
               }
               else if(teclado.keyCode == 39&&i<Tiempo) //derecha
               {
               Personaje.x=Personaje.x+5;
               i++;
               }
               else if(teclado.keyCode == 40&&i<Tiempo) //arriba
               {
               Personaje.y=Personaje.y+5;
               i++;
               }
               else if(teclado.keyCode == 38&&i<Tiempo) //Abajo
               {
               Personaje.y=Personaje.y-5;
               i++;
               }
               //Ataque1 x360  y320
               //Ataque2 x570   y320
               //Ataque3 x360   y403
               //Ataque4 x570   y403
         }
         
         
         
   }
   
}


Ese es todo el codigo de la clase "Main" (la unica que hay en el proyecto).

Por r96s

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 Feb 2015 12:37 am

Por Unukalhai

79 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Feb 2015 12:30 pm
Algunas ideas básicas de juego

- El personaje tiene una velocidad y se mueve con esa velocidad a traves de un loop principal
- Las teclas modifican la velocidad, no mueven el personaje
- el personaje tiene al menos 4 frames, uno por dirección para cambiar la gráfica

El problema de tu código es que mueves el personaje a teclazos, y eso nunca va a fluir
Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Mar 2015 11:27 am
En la página te lo explican muy bien. Espero que te fuera de ayuda.
Saludos.

Por laura89

0 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.