Comunidad de diseño web y desarrollo en internet online

Ayudita con Colision

Citar            
MensajeEscrito el 24 Sep 2005 04:30 am
Bueno mi duda es la siguiente estoy haciendo un jueguito al estilo de Worms GundBond, el juego de tankes, etc. Para el desarrollo de este necesito hacer la colisión perfecta, entre tanke y escena, he realizado un código que logra la colisión con cualquier tipo de escena pero no estoy conforme, y hay algo que me intriga.
Esto es lo que sucede cuando con el Arrow Key le doy a la derecha avanza en x y aloja el objeto en la coordenada correcta y pero con una molesta vibración en las subidas y bajadas, y es lógico por el code ya que controlo el falso y verdadero para que se mantenga en el borde. En cambio cuando voy hacía la izquierda todo marcha bien en las subidas!!!, en las bajadas es obvia la vibración por la simulación de gravedad.
Haber porfa quien me ayuda... aquí esta el code y subí el ejemplo. para que lo vean objetivamente

Código :


g=3;
tanke.onEnterFrame=function(){
   if((r2=terreno.hitTest(this.r2.getBounds(_root).xMax,this.r2.getBounds(_root).yMax,true))||(r1=terreno.hitTest(this._x+this.r1._x,this._y+this.r1._y,true))){
      if(r2){
      if(!terreno.hitTest(this.r1.getBounds(_root).xMax,this.r1.getBounds(_root).yMax,true)){
            this.r1._y+=g;
            //this.cuerpo._y+=g;
         }else{suelo=true}
      }
      if(r1){
      if(!terreno.hitTest(this.r2.getBounds(_root).xMax,this.r2.getBounds(_root).yMax,true)){
            this.r2._y+=g;
            //this.cuerpo._y+=g;
         }else{suelo=true}
      }
      //caminamos
      if(suelo){
         if(Key.isDown(Key.RIGHT)){
               this._x+=2;
               controlaColision(this.r1)
               controlaColision(this.r2)
         }
         if(Key.isDown(Key.LEFT)){
               this._x-=2;
               controlaColision(this.r1)
               controlaColision(this.r2)
         }
      }
   }else{
      this._y+=g;
   }
};
sum=0;
function controlaColision(ins){
      while(terreno.hitTest(ins.getBounds(_root).xMax,ins.getBounds(_root).yMax,true))ins._y--

}

el fla http://www.ditmarblog.com/asm/colision.fla
Saludos

Por t2k

32 de clabLevel



Genero:Masculino  

monkey island

firefox
Citar            
MensajeEscrito el 24 Sep 2005 08:33 pm
realmente estaba sencillo

Código :

bola.onEnterFrame=mover;
g=5;
var ensuelo:Boolean;
function mover(){
   if(this.x==undefined){
      this.x=this._x;
      this.y=this._y;
   };
   if(terreno.hitTest(this.x,this.y,true)){
      ensuelo=true;
   }else{
      this.y+=g;
   }
   if(ensuelo){
      if(Key.isDown(Key.RIGHT)){
         this.x+=3;
         this.y=CoryA(this);
      }
      if(Key.isDown(Key.LEFT)){
         this.x-=3;
         this.y=CoryA(this);
      }
   }
   this._x=this.x;
   this._y=this.y
}
function CoryA(ins){
   while(terreno.hitTest(ins.x,ins.y,true))ins.y--
   return ins.y;
}

Saludos

Por t2k

32 de clabLevel



Genero:Masculino  

monkey island

firefox

 

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