Anuncios Google

Duda sobre colisiones en un juego de lucha

Tengo una duda. Supongamos que estoy haciendo un juego de lucha, y quiero que la colision se ejecute sólo en el contacto con la mano, no con el cuerpo entero, deberia hacer una especie de mapa de colisión o algo asi donde la posicion del mapa sea igual al de la mano o algo asi?

Debo hacerlo por cada personaje, cada movimiento?


En un par de proyectos:

Current: Fantasymind  [||                  ] PROGRESS: 10%

Next: FAR STARS


Twitter: @Cere_Ender


 


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Andres_Ne

Se me ocurre algo. cuando des

Se me ocurre algo. cuando des la (X) que es para golpear con la mano, se cree un rectangulo justo en la posicion de "el brazo" y a este le puedes crear la funcion de colisiones, te doy un code como muestra

 x = 100 ;
 y = 100 ; 
 
largoBrazo = 15 ;
anchoBrazo = 30 ;
 
blanco = color.new(255,255,255) -- EL COLOR NO IMPORTA PORQUE IRA ATRAS, PERO LA FUNCION DE LA LINEA  18 ME PIDE ESTE PARAMETRO
 
while true do
 
	controls.read()
 
 
	draw.fillrect(x , y ,30,30,blanco)
 
 
	if controls.cross() then 
 
	draw.rect(x + 30 , y + 5  ,anchoBrazo,largoBrazo,blanco)
 
 
	end
 
	screen.flip()
end

Cualquier duda comenta, bienvenido a la programacion, Colega.

 

Psdta: El cosigo funciona miralo para que veas graficamente como funciona


 

 

Imagen de Cere_Ender

Oh, genial! es exactamente lo

Oh, genial! es exactamente lo que buscaba! A ver si puedo hacerlo con sprites!

Imagen de arielnmz

Eso es sólo para crear el

Eso es sólo para crear el rectángulo de colisión, para la colisión en si, te recomiendo checar las esquinas superior izq e inferior derecha de ambos, relativo al otro rectángulo de colisión. por ejemplo (tomando en cuenta un plano XY).

Código en C:

//Colision con referencia a la esquina "a" del segundo  rectangulo
if ( rect_1_a_x < rect_2_a_x && rect_1_b_x > rect_2_a_x  ) {
   if ( rect_1_a_y > rect_2_a_y && rect_1_b_y < rect_2_a_y ) {
      //La esquina "a" del rectangulo 2 está dentro del área del rectángulo 1
   }
}
 
//Colision con referencia a la esquina "b" del segundo rectangulo
if ( rect_1_a_x < rect_2_b_x && rect_1_b_x > rect_2_b_x  ) {
   if ( rect_1_a_y > rect_2_b_y && rect_1_b_y < rect_2_b_y ) {
      //La esquina "b" del rectangulo 2 está dentro del área del rectángulo 1
   }
}

Ya sólo tendrías que hacer un "or" entre ambas esquinas para saber si hay una colisión sólo de a, sólo de b o de ambas. Eso, hacerlo en ambos rectángulos (rectángulo 1 respecto a 2 y rectángulo 2 respecto a 1, por si uno es más grande que el otro y resulta estar "por fuera" del segundo), y tener un "or" entre ambas colisiones.
En sí el rectángulo es transparente y está detras del sprite, sólo lo necesitamos por sus esquinas.

;) Saludos y feliz programación!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.