Control de colisiones: hitTest

0 - , , - 31/03/2005 00:00:00

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 Ejemplo » »

Deja tu comentario

  • El comentario debe estar relacionado con el contenido de la entrada.
  • Comentarios ofensivos, con spam o con lenguaje inapropiado serán eliminados.

captcha