Control de colisiones: hitTest

0 COMENTARIOS -  Publicado hace 60 meses -  Clasificado en: , ,

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

Algunas entradas relacionadas:

También te puede interesar:

Haz un comentario

¡Gracias por dejar tu opinión! Por favor procura que tu comentarios sean apropiados respecto al tema tratado en la entrada; que no sean spam, u ofensivos, de otro modo, serán eliminados. Todos los comentarios serán moderados antes de su publicación por lo que su aparición en la web puede verse aplazada un cierto tiempo. Si deseas realizar algún comentario, crítica o sugerencia sobre la propia web puedes hacer a través de la siguiente dirección de correo: webintenta@webintenta.com