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

Ayuda con HitTest para juego de plataformas?

Estas en el tema de Ayuda con HitTest para juego de plataformas? en el foro de Flash y Actionscript en Foros del Web. Quiero hacer un juego de plataformas y tengo problemas con HitTest, para hacer que el personaje no traspase la plataforma. ¿Alguien podría darme un código ...
  #1 (permalink)  
Antiguo 02/07/2010, 16:44
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Ayuda con HitTest para juego de plataformas?

Quiero hacer un juego de plataformas y tengo problemas con HitTest, para hacer que el personaje no traspase la plataforma.
¿Alguien podría darme un código para hacer esto, Y ME LO EXPLICA (encontré varios tutoriales con códigos para esto pero ninguno lo explica)?
Además, también ando buscando el script para agregar gravedad y para hacer que el personaje salte.

<Sólo necesito lo de HitTest y el salto y la gravedad, ya sé como mover al personaje, eso no hace falta>


¡Gracias a todos!
  #2 (permalink)  
Antiguo 04/07/2010, 15:29
 
Fecha de Ingreso: octubre-2008
Mensajes: 137
Antigüedad: 15 años, 6 meses
Puntos: 4
Respuesta: Ayuda con HitTest para juego de plataformas?

Para que lo quieres? As2 o As3
  #3 (permalink)  
Antiguo 07/07/2010, 19:13
 
Fecha de Ingreso: junio-2010
Mensajes: 8
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Ayuda con HitTest para juego de plataformas?

Es para AS2, en Flash 8
  #4 (permalink)  
Antiguo 08/07/2010, 17:06
 
Fecha de Ingreso: noviembre-2009
Mensajes: 10
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Ayuda con HitTest para juego de plataformas?

Hola!

Hace poco también hice un mini juego de plataformas pero lo hice en XNA, entonces te diré la lógica. La verdad es algo bastante sencillo:

La clave se encuentra en esta fórmula (obtenida de la ley de la conservación de la energía):

Vy = RAIZ(2gh)

(La velocidad en el eje "y" de un objeto será igual a la raíz cuadrada del duplo de la gravedad por la altura a la que se encuentre)

Pero hay un problema, ¿cómo carajos encuentras la gravedad de tu juego?, lo más práctico (y lo que hice) para conocerla es: tanteo. En cuanto tengas programado todo, ese tan famosísimo 9.8 lo aumentarás o disminuirás hasta que veas que tu objeto hace saltos factibles en tu escenario.

Si en tu "ciclo maestro del juego" al momento de incrementar la posición en "y" de tu objeto al momento de brincar le estás aumentando 3 pixeles por ejemplo (PosicionEnY = PosicionEnY + 3), vamos a hacer variable ese 3 para que si está el objeto llegando a la parte más alta de su salto no sea un 3 sino un 1 o 0.5 (esto hace ese tan especial "salto real").

Entonces, créate una variable "general" de velocidad en Y (supondré que ya la tienes), sustituyes el 3 por ella (PosicionEnY = PosicionEnY + VelocidadEnY), la inicializas en 0 para que el objeto no se mueva en Y hasta que le indiques el salto y cuando se active esa bandera aplicarás la fórmula ya mencionada:

<Suponiendo que tu constante mágica de gravedad fue 5>
if (brincar){
PosicionEnY = PosicionEnY - RAIZ(5 * ABSOLUTO(PosicionEnY - PosicionYDeTuPlataforma))
}

El valor absoluto es para evitar resultados negativos dentro de la raíz (al brincar, debido a que el y = 0 está en la parte superior y se incrementa conforme "bajamos", siempre darán Y's negativas). Una vez que obtienes el resultado de la fórmula (positivo) se lo restamos a la posición actual de tu objeto para que "suba".

Pregunta cualquier duda que te haya quedado.
Saludos!
  #5 (permalink)  
Antiguo 09/07/2010, 12:51
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 13 años, 10 meses
Puntos: 95
Respuesta: Ayuda con HitTest para juego de plataformas?

Cita:
Iniciado por dmzg10 Ver Mensaje
Hola!

Hace poco también hice un mini juego de plataformas pero lo hice en XNA, entonces te diré la lógica. La verdad es algo bastante sencillo:

La clave se encuentra en esta fórmula (obtenida de la ley de la conservación de la energía):

Vy = RAIZ(2gh)
Nadamas una aclaración, la formula que proporcionas, es la formula de la velocidad derivada de la formula del movimiento rectilineo uniformemente acelerado :)

La ley de la conservacion de la energia en pocas palabras dice, que la energia no se creani se destruye solo se transforma.
  #6 (permalink)  
Antiguo 11/07/2010, 00:25
Avatar de daPhyre
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: [email protected] (Redirects to 127.0.0.1)
Mensajes: 2.404
Antigüedad: 16 años, 1 mes
Puntos: 142
Respuesta: Ayuda con HitTest para juego de plataformas?

A veces complican demasiado lo sencillo...

Un ejemplo básico en pseudocódigo.

Código PHP:
variable entera jumper 7// Con este se inicia, puede ser más o menos

si (jumper && presionandoSaltojugador.velocidadY += jumper--;
// *persionandoSalto es la tecla de brinco.
// Si jumper aun es mayor que 0, se suma a la velocidadY.
jugador.velocidadY--; // Gravedad

jugador.-= jugador.velocidadY // Se mueve el personaje

si (hitTest(suelo)){ // Al tocar el suelo
jugador.velocidadY 0// Toca suelo, deja de caer.
jugador.suelo.jugador.Altura// Se pone el jugador al ras del suelo.
jumper 7// Regresas la habilidad de brincar a tu personaje.

Eso sería básicamente el código de un juego de plataformas básico. Caminar a los lados es como en los demás juegos, supondré que eso ya sabes hacerlo. Si tienes problemas para adaptar el pseudocódigo, seguro podremos ayudarte con tus dudas.

Suerte

Edito: Perdona si no puedo ayudarte a adaptarlo a AS2, estoy más acostumbrado a AS3. Suerte
__________________
<signs>daPhyre</signs>
Jugaa.me


Adios al dolor de cabeza de IE...

Etiquetas: plataformas, 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 12:28.