Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Mgbu en Septiembre 07, 2011, 12:43:55 AM

Título: Colision con paredes
Publicado por: Mgbu en Septiembre 07, 2011, 12:43:55 AM
Bueno, no es un problema grave pero quiero que la colision con la pared de mi juego de tanques sea mas realista
Me parece que no hace falta poner mas que el codigo de movimiento de mi tanque: (esto va en step)
if (left=1)
    {
    if (up=1)
    {
    y-=3.53
    x-=3.53
    image_angle=45
    exit
    }
    if (down=1)
    {
    y+=3.53
    x-=3.53
    image_angle=135
    exit
    }
    if (right=1)
    {
    exit
    }
   
    x-=5
    image_angle=90
   
    }
   
if (up=1)
    {
    if (right=1)
    {
    y-=3.53
    x+=3.53
    image_angle=315
    exit
    }
    if (down=1)
    {
    exit
    }

    y-=5
    image_angle=0

    }
   
if (right=1)
    {
    if (down=1)
    {
    y+=3.53
    x+=3.53
    image_angle=225
    exit
    }
   
    image_angle=270
    x+=5
   
    }
   
if (down=1)
    {
    image_angle=180
    y+=5
    }
   


Si, ya se que se podia hacer con vkcheck en vez de variables para las teclas, pero no tengo ganas de cambiarlo  ;D

A la colision con paredes la solucione precariamente haciendo que rebote, pero vean si saben una solucion mejor

Les dejo el gmk por las dudas...
Título: Re: Colision con paredes
Publicado por: MaanuRP en Septiembre 07, 2011, 02:29:11 AM
Mmm probaste con:
[gml]
x = xprevious;
y = yprevious;
[/gml]

Y si no con if, lo simple.
[gml]
if place_free (x+4,y)
{
x += 4
}
//Y asi con todas las variantes de los movimientos.
[/gml]
Título: Re: Colision con paredes
Publicado por: Mgbu en Septiembre 07, 2011, 05:11:42 PM
No estoy en la casa de mi primo, ma?ana vuelvo pero este me parece una muy buena idea
Citarx = xprevious;
y = yprevious;

En cambio este no
Citarif place_free (x+4,y)
{
x += 4
}
//Y asi con todas las variantes de los movimientos.
Porque el x+4 podria no estar ocupado pero mas a la izquierda podria superponerse una parte del tanque ya que el tanque mide 16 pixeles no 1 ?

Soy medio novato, ma?ana pruebo
Título: Re: Colision con paredes
Publicado por: MaanuRP en Septiembre 07, 2011, 05:33:47 PM
Cita de: Mgbu en Septiembre 07, 2011, 05:11:42 PM
En cambio este no
Citarif place_free (x+4,y)
{
x += 4
}
//Y asi con todas las variantes de los movimientos.
Porque el x+4 podria no estar ocupado pero mas a la izquierda podria superponerse una parte del tanque ya que el tanque mide 16 pixeles no 1

Yo te di un ejemplo, ponle los valores que tu quieres.

No creo que se superponga, ya que muchos de los juegos de plataformas (Que he visto) usan este metodo y si usas bien las mask no hay problema de colisiones.

No entendi lo de que puede superponerse a la izquierda, si te estas moviendo a la derecha con x += 4
Título: Re: Colision con paredes
Publicado por: Mgbu en Septiembre 07, 2011, 07:08:08 PM
No podia esperar, le instale el gm8 a mi primo  :)

Arreglo macanas primero  :-[
CitarNo entendi lo de que puede superponerse a la izquierda, si te estas moviendo a la derecha con x += 4
Quise decir a la derecha, ademas el metodo funciona (yo creia que no) pero es mas complicado y me parece mas "glitchy" que el otro

Muchas gracias, el metodo
x = xprevious;
y = yprevious;

funciona de 10, tema cerrado

PS: Como es eso de cambiar el karma?, yo quiero "puntuar" a la gente que me ayuda pero no se como
Título: Re: Colision con paredes
Publicado por: MaanuRP en Septiembre 07, 2011, 11:36:49 PM
Debes tener un cierto numero de mensajes, ahora mismo no recuerdo cuantos son, pero tienes que subir por lo menos un rango, creo que la imagen del rango es de 33%

Me alegro haberte ayudado :)