Admin
 
 
Logo DIPLOX
Colisiones en flash
Volver Por sereno
  
Viernes, 25/03/2011
Colisiones en flash
hitTest se utiliza sobre todo para el control de colisiones en juegos, aunque también se puede utilizar para la confección de puzzles o juegos infantiles del tipo ¨arrastrar cosas en el lugar apropiado¨. El ejemplo de hoy es una aproximación al uso de hitTest. La sintaxis más utilizada es:

my_mc .hitTest (target )
donde se evalua si dos clips de película se solapan.

Ejemplo:
1.- En mi caso he creado un clip de película en el que he dibujado una caja abierta. He hecho dos copias de este clip y les he variado ligeramente la tinta con el fin de diferenciarlos. A la caja del centro le he dado el nombre de instancia ¨Box_mc¨.
2.- He creado un pequeño rectángulo que he convertido en clip de película al que le he asignado el nombre de instancia ¨ficha1_mc¨.
3.- A ¨ficha1_mc¨ le asignamos el siguiente actionscript:

onClipEvent (enterFrame) {
// si soltamos el rectángulo y no ha colisionado con la caja
if (this.soltar == ¨si¨) {
// aplicamos una fórmula de easing
// para quevuelva a su sitio
distancia_x = Math.round ((Number (x)-Number (this._x))/2);
distancia_y = Math.round ((Number (y)-Number (this._y))/2);
if (Math.abs (distancia_x)<=1 and Math.abs (distancia_y)<=1){
}
else
{
this._x = this._x+distancia_x;
this._y = this._y+distancia_y;
}
}
}

// al presionar
on (press) {
// cambiamos el valor de la variable soltar
soltar = ¨no¨
// y empezamoa a arrastrar el clip
startDrag (this, false);
}

// al soltaro
on (release, releaseOutside) {
// dejamos de arrastrar
stopDrag ();
// evaluamos si colisiona con la caja
if (this.hitTest (this._parent.Box_mc)){
// si es asi lo volvemos invisible
this._visible = false
// ejecutamos la pequeña animación de la
// caja
this._parent.Box_mc.gotoAndPlay (2);
}
else
{
// si no colisiona cambiamos el valor de la variable soltar
// para que al evento enterFrame ejecute la fórmula de easing
soltar = ¨si¨;
}
}
DESCARGAR:
http://Www.webintenta.com/Files/uploads/Epoca1/Archivos/hitTest/Box.fla


Volver Por sereno