Hola, quiero hacer un laberinto. Ya hice que se mueva el tipito, lo que tengo que hacer es que donde haya una pared se choque, o sea no pueda pasar!
GRACIAS
| ||||
ocupa el hit... if (mi_mc.hitTest(pare_mc)) { //que se devuelva :P } espero que te sirva de algo...
__________________ www.plotzer.com :-) |
| |||
Bueno la cosa es relativamente sencilla... Primero creas el laberinto con sus paredes... bien play .... y lo conviertes en un MC ("MovieClip" solo por si aca... ), luego como ya tenés echo el joven que recorre el laberinto, y supongo que también está echo ya el código para responder al teclado o al ratón para que se mueva horizontal y verticalmente, simplemente, le ponés al MC_Joven (se me ocurre así...), en el evento EnterFrame un código similar a este, (aunque creo que debes adecuarlo bastante bien dependiendo del código que recibe los eventos para moverlo, en el siguiente ejemplo le dí movimiento al MC_Joven a través de la posición del mouse si se encuentra encima de MC_Joven se mueve haciar arriba y así el resto) onClipEvent(enterFrame)//Este código se le aplica a MC_Joven { //Para mover MC_Joven por la pantalla con el mouse if(this._ymouse < 0) _y-=2; if(this._ymouse > 25) _y+=2; if(this._xmouse < 0) _x-=2; if(this._xmouse > 25) _x+=2; //Para detectar colisiones JovenCoordenadas = this.getBounds(_root);//Toma coordenadas actuales en terminos de _root if(_root.Laberinto.hitTest(JovenCoordenadas.xMin, _y, true))//Linea 1 _x+=2; // Linea 2 if(_root.Laberinto.hitTest(JovenCoordenadas.xMax, _y, true)) _x-=2; if(_root.Laberinto.hitTest(_x, JovenCoordenadas.yMin, true)) _y+=2; if(_root.Laberinto.hitTest(_x, JovenCoordenadas.yMax, true)) _y-=2; } Donde dice Linea 1 se explica así: vamos a verificar si Laberinto golpea con Joven JovenCoordenadas.xMax es el pixel en el eje x más alto de MC_Joven y _y es el centro de MC_Joven, el true es para que tenga en cuenta toda la forma de Laberinto y no solo el rectangulo de forma exterior, así que con esta opción verificamos si el pixel que se encuentra en el centro horizontal y en la parte superior de MC_Joven golpea en algún lugar con Laberinto, si es así disminuimos el valor del eje x de MC_Joven, para que quede en la posición antes de golpear con Laberinto... Bueno no se si quedó muy claro, pero la versión Flash MX tiene un .fla que se llama MAZE.FLA que es justo lo que vos necesitas y el código es bastante similar aunque un poco más complejo, el MAZE.fla lo encuentras en archivos de programa/macromedia/flash mx/samples/... Espero sirva de algo... |
| |||
ByronNeo Laberinto Ja... bueno... supongo que ya no estás haciendo el juego del laberinto, hace rato no me conectaba al foro... Bueno por si acaso, de vez en cuando atravieza las paredes es por que no son lo suficientemente gruesas, jajaja, se que suena gracioso pero así es, en el momento en que se incrementa la posición del clip, que hace las veces de maze, se incrementa en más puntos que el grosor de las paredes, es decir: si las paredes tienen un grosor de 2 puntos, y pones a tu maze a avanzar de atres puntos: algo así... Maze._x += 3;, seguro que en algún momento pasa de una coordenada a la otra sin tocar el muro, o al menos el pixel para el cual estamos teniendo en cuenta el hitTest... espero sirva de algo, aunque muy tarde ya... |