Comunidad de diseño web y desarrollo en internet online

Ayuda, mi personaje se mueve solo para atras

Citar            
MensajeEscrito el 16 Oct 2018 08:10 pm
Buenos dias,

Estoy comenzando con la programación de Video Juegos y me estoy encontrando con el problema de que al probar la película mi personaje se mueve para atras.

Podrían ayudarme por favor a detectar el error.

El código con el que estoy trabajando es el siguiente:

main:

Código :

package  {
   
   import flash.display.MovieClip;
   import Codigos.CamaraVirtual;
   import flash.display.StageScaleMode;
   import Codigos.Personaje;
   
   public class main extends MovieClip {
      
      public static var nuevoJugador:Personaje;
      public static var nuevaCamara:CamaraVirtual;
      public static var Temporalpuntos:int = 0;
      public static var DerechaVar:Boolean = false;
      public static var IzquierdaVar:Boolean = false;
      public static var SaltoVar:Boolean = false;
      
      public function main() {
         stage.scaleMode = StageScaleMode.EXACT_FIT;   
      }
   }
   
}


nivel 1

Código :

package Codigos.Niveles {
   import flash.display.MovieClip;
   import Codigos.Personaje;
   import Codigos.CamaraVirtual;
   import flash.events.Event;
   
   public class Nivel1 extends MovieClip{

      public function Nivel1() {
         main.nuevoJugador = new Personaje;
         addChild(main.nuevoJugador);
         main.nuevoJugador.x = 300;
         main.nuevoJugador.y = 150;
         main.nuevaCamara = new CamaraVirtual;
         addChild(main.nuevaCamara);
         main.nuevaCamara.x = 400;
         main.nuevaCamara.y = 240;
         addEventListener(Event.ENTER_FRAME, nivel1Eventos);
      }
private function nivel1Eventos (e:Event){
if(main.nuevoJugador.x<=150){
   MovieClip(root).LineasNivel1.x+=5;
   main.nuevoJugador.x+=5;
   
} else if (main.nuevoJugador.x>=650)
MovieClip(root).LineasNivel1.x-=5;
   main.nuevoJugador.x-=5;
         
         
   
}
   }
   
}


camara virtual

Código :

package Codigos {
   
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.Event;
   
   
   public class CamaraVirtual extends MovieClip {
      
      
      public function CamaraVirtual() {
         addEventListener(MouseEvent.MOUSE_DOWN, Botones);
         addEventListener(MouseEvent.MOUSE_UP, Saltar);
         addEventListener(Event.ENTER_FRAME, TodaCam);
         Puntos.text = String(int(0));
      }
      private function Botones (e:MouseEvent){
         if (e.target == Derecha){
            main.DerechaVar = true;
         }
         else if (e.target == Izquierda){
            main.IzquierdaVar == true;
         }
         else if (e.target == Salto){
            main.SaltoVar == true;
         }
      }
      
      private function Saltar (e:MouseEvent){
         main.DerechaVar = false;
         main.IzquierdaVar = false;
         main.SaltoVar = false;
         
         }
         
         private function TodaCam (e:Event){
            Puntos.text = String(int(main.Temporalpuntos));
         }
   }
   
}



personaje

Código :

package Codigos {
   
   import flash.display.MovieClip;
   import flash.events.Event;
   
   
   public class Personaje extends MovieClip {
      private var VelocidadX:int = 5;
      private var VelocidadY:int = 1;
      private var Limite:int = 10;
      private var Salto:int = -12;
      
      
      public function Personaje() {
         addEventListener(Event.ENTER_FRAME,  Moverme);
               }
               private function Moverme (e:Event){
                  var NivelaTocar = MovieClip(root).LineasNivel1;
               if (NivelaTocar.hitTestPoint(x, y + height / 2, true)){
                  while (NivelaTocar.hitTestPoint(x, y + height / 2, true)){
                     y--;
                  }
                  VelocidadY = 0;
                  if(main.SaltoVar){
                     VelocidadY = Salto;
                     y+=VelocidadY;
                  }
               }
               else if (NivelaTocar.hitTestPoint(x, y - height / 2, true)){
                  VelocidadY = VelocidadY * -0,5;
                  y +=VelocidadY;
                  while (NivelaTocar.hitTestPoint(x, y - height / 2, true)){
                     y++;
                     main.SaltoVar = false;
                  }
               }
               else {
                  y+= VelocidadY * 1,5;
                  main.SaltoVar = false;
                  if (VelocidadY <= Limite){
                     VelocidadY++;
                  }
               }
               while (NivelaTocar.hitTestPoint(x + width / 2, y, true)){
                  x--;
               }
               while (NivelaTocar.hitTestPoint(x - width / 2, y, true)){
                  x++;
               }
               movimientosReales();
   }
   private function movimientosReales(){
      if (main.DerechaVar){
         x+= VelocidadX;
         scaleX = 1;
      }
      else if (main.IzquierdaVar){
         x-= VelocidadX;
         scaleX = -1;
      }
   }
   
}
}



[img]https://ibb.co/bDW3gL[/img]

[img]https://ibb.co/bDW3gL[/img]

Por ezequielvillagra

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Oct 2018 06:18 pm
Soy muy vago leyendo codigo asi que voy a tratar de ir por otro lado. Cuando dices se mueve para atras, supongo que va de espaldas (es decir debe tener un frente), y tambien supongo que la velocidad que tiene es negativa en vez de positiva (o viceversa, da igual). De esto deduzco que en el algoritmo de calculo de velocidad se esta dando vuelta en uno de los ejes, o en los dos, revisa eso. Si logras hacer spot en eso y postear menos de 10 lineas en donde consideras puede estar el error, le echo un ojo, pero es que con mas ya me pierdo !

Salute
Jorge

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.