Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Benstudios en Agosto 30, 2015, 07:09:25 PM

Título: ¿Cómo hago para que el 'player' del juego choque con lo que has pintado?
Publicado por: Benstudios en Agosto 30, 2015, 07:09:25 PM
Hola  :)

Estoy haciendo un juego en el que tú eres el que dibuja el camino al player para llegar a la meta, ya tengo hecho para que se pueda dibujar con el mouse pero el player lo traspasa, lo que tengo hecho es lo siguiente: (obj_draw)

evento:create
first=0
nlines=1
time=0

evento:draw
for(i=1; i<nlines; i=i+1)
{
draw_line_width(xl1,yl1,xl2,yl2,4)
}


if mouse_check_button(mb_left)
{
if first=0
{
xline=mouse_x
yline=mouse_y
first=1
}
else
if first=1
{
draw_line_width(xline,yline,mouse_x,mouse_y,4)
time+=1 if time<4 { xl1[nlines]=xline; yl1[nlines]=yline; xl2[nlines]=mouse_x; yl2[nlines]=mouse_y; nlines+=1; first=1; xline=mouse_x; yline=mouse_y; time=0; }
}
}
else
{
if first=1
{
xl1[nlines]=xline
yl1[nlines]=yline
xl2[nlines]=mouse_x
yl2[nlines]=mouse_y

nlines+=1
first=0
}
}


[gracias al tutorial de guinxu]

No sé si me entenderéis, pero espero que sí  :D

Buenas tardes.
Título: Re:¿Cómo hago para que el 'player' del juego choque con lo que has pintado?
Publicado por: Guacusio en Agosto 30, 2015, 07:56:33 PM
Si con "chocar" te refieres a poder detectar si el jugador colisiona con una línea, usa la función collision_line. Tendrás que usarla por cada línea que quieras comprobar.
Título: Re:¿Cómo hago para que el 'player' del juego choque con lo que has pintado?
Publicado por: Benstudios en Agosto 30, 2015, 08:13:47 PM
Cita de: Guacusio en Agosto 30, 2015, 07:56:33 PM
Si con "chocar" te refieres a poder detectar si el jugador colisiona con una línea, usa la función collision_line. Tendrás que usarla por cada línea que quieras comprobar.

Perdón y como tendría que quedar? Es que no tengo mucha experiencia con Game maker  :-\
Título: Re:¿Cómo hago para que el 'player' del juego choque con lo que has pintado?
Publicado por: Guacusio en Agosto 30, 2015, 08:47:34 PM
Probé tu código y lo que hace es dibujar una línea entre la posición previa del mouse y la actual. Como la posición del mouse se actualiza en cada step, si no mueves el mouse en cada step va a desaparecer la línea al ser igual la última posición del mouse con la actual, así que dudo que ese código te sirva de algo.

Respecto a tu pregunta concreta, tienes que hacer un ciclo que recorra las coordenadas de cada línea y compruebe si la línea formada por esas coordenadas colisiona con el jugador. Algo como esto:

colision=false;//indica si hay una línea que colisiona con el jugador
//l es un arreglo de nlineas filas y 4 columnas que guarda para cada línea las coordenadas de sus extremos
//las columnas 0 a 3 de l representan las coordenadas x1,y1,x2,y2 de una línea, respectivamente
for(i=0;i<nlineas;i+=1)
    {
    if collision_line(l[i,0],l[i,1],l[i,2],l[i,3],id,true,false)
        colision=true;
    }
Título: Re:¿Cómo hago para que el 'player' del juego choque con lo que has pintado?
Publicado por: Clamud en Septiembre 05, 2015, 01:24:06 AM
En vez de arreglos, se puede usar una path, como en el script que hice. Y adjunto otro ejemplo que te puede servir (no lo hice yo).