Foros del Web » Creando para Internet » Flash y Actionscript »

colision entre clips de un juego [ayuda]

Estas en el tema de colision entre clips de un juego [ayuda] en el foro de Flash y Actionscript en Foros del Web. buenos dias, estoy desarrollando un juego que se podria decir que es estilo "zelda de la game boy", el problema lo estoy teniendo para que ...
  #1 (permalink)  
Antiguo 25/02/2010, 03:29
 
Fecha de Ingreso: enero-2010
Mensajes: 97
Antigüedad: 10 años
Puntos: 3
colision entre clips de un juego [ayuda]

buenos dias, estoy desarrollando un juego que se podria decir que es estilo "zelda de la game boy", el problema lo estoy teniendo para que por ejemplo al poner una casa, el muñeco una vez entre en contacto con ella no pueda seguir en esa direccion, es decir, no la pueda atravesar, llevo un rato dandole vuelvas al coco y no se me ocurre la solucion, porque si pongo un hittest que cuando se toquen le desactive el movimiento, se lo desactivo en las 4 direcciones, por lo que no se puede mover, y no se me ocurre la manera de simplemente que no pueda atravesarla. " soy un noob de esto de flash". ¿ podria decirme alguien como hacerlo?. gracias de antemano
  #2 (permalink)  
Antiguo 25/02/2010, 03:38
 
Fecha de Ingreso: enero-2010
Mensajes: 97
Antigüedad: 10 años
Puntos: 3
Respuesta: colision entre clips de un juego [ayuda]

he estao probando algunas cosillas de este estilo:

while (this.hitTest(_root.pj._x+_root.pj._width/2, _root.pj._y, true)) {
_root.pj._x--;
} while (this.hitTest(_root.pj._x-_root.pj._width/2, _root.pj._y, true)) {
_root.pj._x++;
}

pero a veces hace cosas raras como entrar por arriba y al siguiente segundo aparece abajo o a la izquierda :s, alguna idea?
  #3 (permalink)  
Antiguo 25/02/2010, 12:46
 
Fecha de Ingreso: diciembre-2009
Mensajes: 25
Antigüedad: 10 años
Puntos: 0
Respuesta: colision entre clips de un juego [ayuda]

hola! yo hago juegos flash y tenia el mismo problema en principio. el ajuste lo tenes que hacer proporcional al desplazamiento de los objetos más un poquito para evitar que se repita constantemente el hitTest=true... esto es mantener la distancia, para eso tenes que tener en cuenta el desplazamiento y el tamaño de los objetos (la forma también pero simplifiquemos un poco). Por ejemplo, hice un juego de pool, por cada interacción el sistema comprueba la distancia entre las bolas (trigonometria basica), si hay colisión se mueven en le dirección opuesta entre ellas para mantener la distancia, luego calculo como deben rebotar teniendo en cuenta la dirección entre ellas, la dirección de movimiento de cada una, la fuerza del impulso, etc. eso depende de cada juego, en este caso todas las bolas son iguales en tamaño y deben comportarse con las mismas propiedades.
En un juego más viejo que hice hacia simplemente hitTest al clip (this.hitTest(otro)) y luego veía la posición relativa entre ellos para ajustar. si un personaje choca contra un objeto solido, el personaje "rebota" un poco con la misma fuerza de su impulso, o simplemente se lo deja a la distancia del otro clip. Yo he usado bastante el rebote porque le da un toque muy bueno a algunos juegos, más si uno le pone sonido a ese rebote, es como hacia el mario!.
  #4 (permalink)  
Antiguo 25/02/2010, 17:48
 
Fecha de Ingreso: enero-2010
Ubicación: Cusco-Cusco-Santiago
Mensajes: 6
Antigüedad: 10 años
Puntos: 0
Respuesta: colision entre clips de un juego [ayuda]

Buenas
Aca hay algo de codigo tal vez te sirva de algo, en este caso cada vez que llegue a encontrar con el circle_mc(clip de pelicula) retrocedera, solo has 2 clips de pelicula y ponle los nombres de circle_mc y square_mc... y este codigo utilizalo en la linea principal... cuidate nos vemos

Código as:
Ver original
  1. var velo=5;
  2. this.onEnterFrame=function(){
  3.     if(Key.isDown(Key.UP)){
  4.        
  5.         if (square_mc.hitTest(circle_mc)) {
  6.             square_mc._y+=velo;
  7.             return;
  8.         }else{
  9.             square_mc._y-=velo;
  10.         }
  11.     }
  12.     if(Key.isDown(Key.DOWN)){
  13.         if (square_mc.hitTest(circle_mc)) {
  14.             square_mc._y-=velo;
  15.         }else{
  16.             square_mc._y+=velo;
  17.         }
  18.     }
  19.     if(Key.isDown(Key.RIGHT)){
  20.         if (square_mc.hitTest(circle_mc)) {
  21.             square_mc._x-=velo;
  22.         }else{
  23.             square_mc._x+=velo;
  24.         }
  25.     }
  26.     if(Key.isDown(Key.LEFT)){
  27.         if (square_mc.hitTest(circle_mc)) {
  28.             square_mc._x+=velo;
  29.         }else{
  30.             square_mc._x-=velo;
  31.         }
  32.     }
  33. }

Etiquetas: clips, colision, juegos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:19.