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.
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.
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 :-\
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;
}
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).