Comunidad de diseño web y desarrollo en internet online

duda con juego de plataformas

Citar            
MensajeEscrito el 07 Mar 2011 03:38 am
hol a todos, mi problema esque estaba haciendo (o intentando ¬¬) crear un juego de plataformas, hice el codigo para que se mueva, para que salte, para que camine sobre la tierra... todo hiba bien hasta que provando la pelicula me di cuenta de algo raro...
mirenlo ustedes mismos AQUI-
¿LO VEN? cuando saltas por primera ves y caes al suelo el personaje queda parado como deve de ser, pero a saltar de nuevo el personaje queda suspendido en el aire

les dejo el codigo que uso:

CODIGO DEL PERSONAJE:

Código ActionScript :

class mario extends MovieClip
{
   
   var grav:Number = 0;
   var tocando_tierra:Boolean = false;
   function onEnterFrame()
   {
      
      movimiento();
      salto();
      golpe_aereo();
      trace(tocando_tierra)
   }


   //empiesa movimiento
   function movimiento()
   {
      grav++;
       _y+=grav;
      if(variables.terreno.hitTest(_x, _y + _height, true)){
         tocando_tierra = true
         grav = -1
      }
      else{
         tocando_tierra = false
      }
      if (!Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT) && tocando_tierra)
      {
         gotoAndStop(1);

      }
      if (Key.isDown(Key.RIGHT) && tocando_tierra)
      {
         _x += variables.velocidad_de_mario;
         _xscale = 100;
         gotoAndStop(2);
      }
      if (Key.isDown(Key.LEFT) && tocando_tierra)
      {
         _x -= variables.velocidad_de_mario;
         _xscale = -100;
         gotoAndStop(2);
      }
   }
   //termina movimiento


   //empiesa salto
   function salto()
   {
      if (Key.isDown(Key.UP) && tocando_tierra)
      {
         grav = -variables.velocidad_de_salto
      }
      
      if (Key.isDown(Key.LEFT) && !tocando_tierra)
      {
         _x -= variables.velocidad_de_mario;
         _xscale = -100;
      }
      if (Key.isDown(Key.RIGHT) && !tocando_tierra)
      {
         _x += variables.velocidad_de_mario;
         _xscale = 100;
      }
   }
   //termina salto


   //empiesa golpe aereo
   function golpe_aereo()
   {
      if (!hitTest(variables.terreno))
      {
         gotoAndStop(3);
      }
   }
   //termina golpe aereo
}


En el ecenario tengo un mc que contiene tres frames con una animacion en cada una,
1.ro el personaje parado
2.do el personaje caminando
3.ro el personaje saltando o golpeando al aire

si me pudieran decir en donde esta mi error se los agradeseria

Por swek

23 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Mar 2011 12:07 pm
Tip: unifica las rutinas de esta forma

- Hay un input central que chequea las teclas, puedes usar Key.addEvenListener para ello
- Hay un solo onEnterFrame que actualiza la posición del personaje, usa fuerzas en el eje _x e _y para moverlo
- Hay una case con las distintas posiciones (se lo llama máquina de estados) que se dispara desde las teclas y determina en que animación se encuentra el personaje

Luego chequea que el if que corrige la posición al suelo se ejecute, posiblemente te falte un equeño offset

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Mar 2011 10:26 pm
mmmm, podrias explicarmelo con peras y mansanas? xD no entiendo tanto de esto

Por swek

23 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Mar 2011 02:52 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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