Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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: Player se traba en la pared  (Leído 310 veces)

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

Desconectado eams1986

en: Octubre 29, 2020, 05:43:43 am
Hola! a todos :)

Estoy tratando de colisionar con un objeto pero se me queda trabado cuando colisiono :(

La mascara de colision es cuadrada

https://i.gyazo.com/37f0df6c12cc887d78a8146517a4a6f1.png
https://i.gyazo.com/34e2247fad6a54ead47470b9b0359847.png

tambien al mover el player estoy utilizando friction cuando se detiene el player : friction = 0.06;

velocidad = 3

if keyboard_check(vk_left){
    hspeed =-velocidad;
    giro_sierra_left = true;
    buffer_giro++;
    }
       
if keyboard_check(vk_right) {
    hspeed =+velocidad;
    giro_sierra_left = true;
    buffer_giro++;
    }

//Check for horizontal collisions
if place_meeting(x+hspeed,y,o_wall_23){
    while !place_meeting(x+sign(hspeed),y,o_wall_23){
        x = x + sign(hspeed);
        }
    hspeed = 0;
    }
x = x + hspeed;

//Check for vertical collisions
if place_meeting(x,y+vspeed,o_wall_23){
    while !place_meeting(x,y+sign(vspeed),o_wall_23){
         y = y + sign(vspeed);
        }
    vspeed = 0;
    }    
y = y + vspeed;


Gracias! saludos y bendiciones
« última modificación: Octubre 29, 2020, 05:47:13 am por eams1986 »

 


No Tienes Permisos Para Dar Puntos
point 2 Puntos

Usuarios que puntuaron el tema » Marcusmaniacus (2 Pts) 


Desconectado Marcusmaniacus

Respuesta #1 en: Octubre 30, 2020, 06:10:23 am
No se si te refieras a esto  Pero aver vere si esto te puede ayudar

Step
/*create*/
velocidad=3

/*Step*/
if keyboard_check(vk_left)
{
       repeat (velocidad)
       {
       if(place_free(x-1,y))
            {
             x++
            }
       else
       break;
       }
}
Lo mismo seria para el otro lado no se si a eso te referias ya que no comprendi mucho tu punto espero que te ayudara en todo caso que no si me explicas mejor tal vez te pueda ayudar