Comunidad de diseño web y desarrollo en internet online

Ayuda con hitTestObject....!!!

Citar            
MensajeEscrito el 20 Feb 2009 10:05 pm
Bueno tengoo un problema que resolver urgente y no lo he podido conseguir...lo que pasa es lo siguiente tengo en el stage dos MC :

1) player_mc
2) obstaculo_mc

El codigo consiste en que yo puedo desplazar a player_mc con las flechas del teclado por todo el stage, sin embargo no puedo pasar por encima del obstaculo_mc ("obvio"), la cuestion es que al hacer contacto con el obstaculo_mc, el MC player_mc se detiene, pero si quiero salir moverlo para otro lado, el player_mc ya no se mueve......

Este es el codigo que estoy utilizando......

Código :

import flash.events.Event;

var keyPressed:uint;
var rightKeyIsDown:Boolean;
var leftKeyIsDown:Boolean;
var downKeyIsDown:Boolean;
var upKeyIsDown:Boolean;
var Velocidad:Number=5;

function IniciaJuego():void {
   rightKeyIsDown=false;
   leftKeyIsDown=false;
   stage.addEventListener(KeyboardEvent.KEY_DOWN, pressKey);
   stage.addEventListener(KeyboardEvent.KEY_UP, releaseKey);
}

function pressKey(event:KeyboardEvent):void {
   keyPressed=event.keyCode;
   if (keyPressed==Keyboard.RIGHT) {
      rightKeyIsDown=true;
   }
   if (keyPressed==Keyboard.LEFT) {
      leftKeyIsDown=true;
   }
   if (keyPressed==Keyboard.DOWN) {
      downKeyIsDown=true;
   }
   if (keyPressed==Keyboard.UP) {
      upKeyIsDown=true;
   }
   player_mc.addEventListener(Event.ENTER_FRAME, movePlayer);
}


function releaseKey(event:KeyboardEvent):void {
   var thisKey:uint=event.keyCode;
   if (thisKey==Keyboard.RIGHT) {
      rightKeyIsDown=false;
   }
   if (thisKey==Keyboard.LEFT) {
      leftKeyIsDown=false;
   }
   if (thisKey==Keyboard.DOWN) {
      downKeyIsDown=false;
   }
   if (thisKey==Keyboard.UP) {
      upKeyIsDown=false;
   }
}

function movePlayer(event:Event):void {
   var Varstatus:Boolean;
   Varstatus=player_mc.hitTestObject(obstaculo_mc);
   if (rightKeyIsDown&&Varstatus==false) {
      player_mc.x+=Velocidad;
   }
   if (leftKeyIsDown&&Varstatus==false) {
      player_mc.x-=Velocidad;
   }
   if (downKeyIsDown&&Varstatus==false) {
      player_mc.y+=Velocidad;
   }
   if (upKeyIsDown&&Varstatus==false) {
      player_mc.y-=Velocidad;
   }
}
IniciaJuego();


La pregunta seria, como hago para que el player_mc, al hacer colision con el obstaculo_mc, lo pueda mover para pasar por un lado de este.........

Muchas gracias son muy importantes sus ayudas........ :lol:

Por Fidelacho

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Feb 2009 12:19 am
Muevelo antes, me explico:

Código ActionScript :

//almacenas la vieja posicion
var viejaY:Number=player_mc.y;
var viejaX:Number=player_mc.x;

//lo mueves
if (rightKeyIsDown) {
      player_mc.x+=Velocidad;
   }
  else  if (leftKeyIsDown) {
      player_mc.x-=Velocidad;
   }
   else if (downKeyIsDown) {
      player_mc.y+=Velocidad;
   }
   else if (upKeyIsDown) {
      player_mc.y-=Velocidad;
   }
/// validas si choco

var Varstatus:Boolean;
Varstatus=player_mc.hitTestObject(obstaculo_mc);
si choca lo regresas a su posicion original
if(Varstatus){
 player_mc.y=viejaY;
 player_mc.x=viejaX;
}



El objeto siempre se movera pero si choca se regresa a su posicion original dando la ilucion de no moverse esto es tan rapido que el usuario no lo notara,estoy seguro que hay mas formas de hacerlo pero esta se me ocurrio espero te sirva.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2009 05:43 pm
Excelente Angel Roberto, me funciono de maravilla.....Muchas Gracias.......!!!

Por Fidelacho

12 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Feb 2009 05:52 pm
Para eso estamos!!! :D

Por Angel Roberto

Claber

248 de clabLevel



 

firefox

 

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