Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: [SOLUCIONADO]No me detecta las colisiones horizontales  (Leído 709 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Buenas a todos!. Estoy intentando familiarizarme con el tema de las colisiones. Estoy haciendo un plataformas básico. Las colisiones verticales funcionan perfectamente, pero las horizontales no. os pongo el código a ver si me podéis echar una mano. Un saludo

Código: [Seleccionar]
//--------------------Colisiones-----------------------------------------

//Colision vertical contra el suelo

if place_meeting(x,y+vsp,ob_suelo){

//Mientras no encontremos colision a un pixel, ajustamos de 1 en 1
while (!place_meeting(x,y+sign(vsp),ob_suelo)){
y += sign(vsp);
}
vsp = 0;
}

//Colisiones horizontales

if (place_meeting(x+hsp,y,ob_suelo)){

//Mientras no encontremos colision a un pixel, ajustamos de 1 en 1
while (!place_meeting(x+sign(hsp),y,ob_suelo)){
x += sign(hsp);
}
hsp = 0;
}
« última modificación: Junio 26, 2019, 11:25:00 am por Fashion_Trozos »

 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado 3dgeminis

Respuesta #1 en: Junio 25, 2019, 09:02:03 pm
Es el mismo codigo que uso para las colisiones y me funciona, deberias subir el codigo completo, talves el problema este en otra parte.

 


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Respuesta #2 en: Junio 26, 2019, 11:09:04 am
Hola, aquí te lo paso

Código: [Seleccionar]
//-------------Detectar muerte por caida----------------------------------


if y > room_height {
room_restart()
}


//---------------------Gravedad---------------------------------------

if (vsp < 20) and !place_meeting(x,y+1,ob_suelo){
vsp += grav;
}


//-----------------------Saltos----------------------------------------

tecla_salto = mouse_check_button_pressed(mb_right)

if place_meeting(x,y+1,ob_suelo){
if tecla_salto{
saltando = true
vsp = -jumpspeed
}

}


//--------------------Colisiones-----------------------------------------

//Colision vertical contra el suelo

if place_meeting(x,y+vsp,ob_suelo){

//Mientras no encontremos colision a un pixel, ajustamos de 1 en 1
while (!place_meeting(x,y+sign(vsp),ob_suelo)){
y += sign(vsp);
}
saltando = false;
vsp = 0;
}

//Colision con saltador
if place_meeting(x,y+vsp,ob_saltador){

//Mientras no encontremos colision a un pixel, ajustamos de 1 en 1
while (!place_meeting(x,y+sign(vsp),ob_saltador)){
y += sign(vsp);
}
vsp = -50;
}

//Engancharse a los techos






//Colisiones horizontales

if (place_meeting(x+hsp,y,ob_suelo)){

//Mientras no encontremos colision a un pixel, ajustamos de 1 en 1
while (!place_meeting(x+sign(hsp),y,ob_suelo)){
x += sign(hsp);
}
hsp = 0;
}



//------------Deteccion de movimiento y velocidad-----------------------


tecla_derecha   = keyboard_check(ord("D"))
tecla_izquierda = -keyboard_check(ord("A"))
move = tecla_derecha + tecla_izquierda;
hsp = move * moovespeed;


//---------------------Sumar velocidades---------------------------------

y += vsp;
x += hsp;




//--------------------Reiniciar la room-----------------------------------

if keyboard_check_pressed(vk_enter){
room_restart()
}

if keyboard_check_pressed(vk_escape){
exit
}

Muchas gracias por responder

 


Desconectado Fashion_Trozos

  • Habitual
  • *
  • Puntos: 141
  • Mensajes: 72
    • Ver Perfil
Respuesta #3 en: Junio 26, 2019, 11:18:00 am
Ya esta!!! así como revisaba el código lo he visto! El problema es donde he colocado x += hsp. Lo he colocado después de la colisión horizontal y funciona perfectamente!