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

Pendiente de un MC en un punto

Estas en el tema de Pendiente de un MC en un punto en el foro de Flash y Actionscript en Foros del Web. Buenos días / tardes. Estoy desarrollando un minijuego de plataformas en Flash, y necesito saber la pendiente del escenario en el punto donde se encuentra ...
  #1 (permalink)  
Antiguo 19/10/2007, 04:19
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 1
Pendiente de un MC en un punto

Buenos días / tardes.

Estoy desarrollando un minijuego de plataformas en Flash, y necesito saber la pendiente del escenario en el punto donde se encuentra el personaje.

El escenario es un MC (llamado "escenario") y el personaje es otro MC (llamado "pj").

Para detectar las colisiones utilizo ésta función:

Código:
function Colision(b) {
   with (pj) {
      if (b.hitTest(getBounds(_root).xMax, _y, true)) {
         return "derecha";
      } else if (b.hitTest(getBounds(_root).xMin, _y, true)) {
         return "izquierda";
      } else if (b.hitTest(_x, getBounds(_root).yMax, true)) {
         return "suelo";
      } else if (b.hitTest(_x, getBounds(_root).yMin, true)) {
         return "techo";
      } else {
         return false;
      }
   }
}
Y para llamarla:
Código:
Colision(escenario)
El juego es para Flash Lite 2.0, así que no puedo utilizar una función más precisa, ya que FL2 no puede trabajar a nivel de píxel.

Lo que quiero es una función que devuelva la inclinación del MC "escenario" en el puto en el que colisiona con el MC "pj".

He buscado en Google, pero no he encontrado nada, ni siquiera cómo hacer una linea tangente al MC para después calcular su ángulo.

Gracias por adelantado.

Saludos.
  #2 (permalink)  
Antiguo 21/10/2007, 15:02
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: Pendiente de un MC en un punto

Por favor, es bastante urgente.

No sé si he dado pocos detalles o si es que no existe nada que me sirva, aunque no creo que sea eso, porque he visto muchos juegos en Flash que detectaban claramente la pendiente del escenario.

Sólo necesito conocer la linea tangente a un mc en un punto, o algo similar.

Gracias por adelantado.
  #3 (permalink)  
Antiguo 22/10/2007, 03:37
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Pendiente de un MC en un punto

Francamente, no entiendo eso de la inclinación del escenario en el punto en que se encuentra el personaje. ¿Es que el escenario tiene varias inclinaciones? ¿No te basta con obtener el ángulo mediante la propiedad _rotation?
  #4 (permalink)  
Antiguo 22/10/2007, 04:01
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: Pendiente de un MC en un punto

El escenario tiene varias inclinaciones. Es un juego de plataformas, y el "nivel" (lo que yo llamo escenario) es un MovieClip.

Por ejemplo, si es PJ pasa primero por una cuesta hacia arriba, que la función devuelva +30, y en una cuesta hacia abajo, -30 (suponiendo que esa sea su inclinación en grados).
  #5 (permalink)  
Antiguo 22/10/2007, 04:28
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Pendiente de un MC en un punto

Es decir, que el escenario es un mc's con más mc's en su interior, uno para cada plataforma. ¿Voy bien? Entonces, cuando se colocan las plataformas en el escenario, ya les das una inclinación, ¿no? Es un dato que ya tienes. Pues dependiendo de cómo lo asignes, lo puedes recuperar luego.
  #6 (permalink)  
Antiguo 22/10/2007, 04:34
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: Pendiente de un MC en un punto

No. El escenario es un único MC. Un MC con distintas líneas, pero un único MC.

Es decir, el escenario lo dibujo tal y como se va a ver en el juego. Con lineas inclinadas, curvas, plataformas... y después lo importo todo junto con "AttachMovie". Pero es un MC, con lineas dibujadas, no con más MC's en su interior. Y claro, al tener todo tipo de lineas, la inclinación del "suelo" (es decir, el punto de contacto entre el PJ y el escenario) varía. No puedo utilizar una propiedad global del MovieClip, ya que cada punto tiene una inclinación.

Tiene que haber alguna función que pueda servirme xD.
  #7 (permalink)  
Antiguo 22/10/2007, 06:02
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Pendiente de un MC en un punto

Pues me temo que no se puede, al menos hasta donde yo llego.
  #8 (permalink)  
Antiguo 24/10/2007, 16:11
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: Pendiente de un MC en un punto

Bueno, gracias de todas formas.

Saludos.
  #9 (permalink)  
Antiguo 25/10/2007, 01:05
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 19 años, 9 meses
Puntos: 12
Re: Pendiente de un MC en un punto

Si colocaras un mc para cada plataforma, sí podrías. Detectas la colisión y averiguas su ángulo de rotación.
  #10 (permalink)  
Antiguo 28/11/2007, 06:01
 
Fecha de Ingreso: febrero-2007
Mensajes: 74
Antigüedad: 17 años, 1 mes
Puntos: 1
Re: Pendiente de un MC en un punto

Al final lo he conseguido, con una función de mi cosecha, lo que hago es lo siguiente:

Creo 2 mc's (2 puntos) en la base del Personaje, a unos 10 pixeles de distancia.
Después, en un bucle:
while(!Colision) { // Lo mismo con los 2 puntos
mc_punto._y += 1
}
Es decir, que al final los puntos están justo en el suelo. Después, basta con calcular la diferencia de altura entre los 2 mc's y en base a eso se calcula la pendiente.

Si alguien quiere la función, la posteo.

Gracias por ayudar (o al menos por intentarlo xDDDD).

Saludos.
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:10.