Colisión de un sprite contra un objeto dibujado.

Started by Gabysantof, September 06, 2023, 03:34:47 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Gabysantof

Estoy intentando una pequeña prueba donde tengo un "heroe" que puede caminar sobre la pantalla libremente... pero cuando choca con una linea debería no poder avanzar más en esa direccion... por el momento solo quiero un cartel que diga "colision" pero no me está funcioando... nunca tuve problemas para colisionar un sprite con otro, pero nunca había intentando con un proceso que solo dibuja una linea... se puede hacer esto??

process lineaAbajo()
begin
z= -10;
x=100;
   while ((!key(_esc)) AND (!key(_s)))
   x+=1;
   if (collision_box (type heroeCamina))   
         write(0,SCREEN_WIDTH-250,SCREEN_HEIGHT-10,3,"colision");
   end
   
   drawing_z(-10);
   drawing_color(rgb(243,159,24));     
   draw_line( x , x ,  640 , 400 );
   frame;
   end
end

Drumpi

No, lo que estás haciendo no es correcto.
Los procesos colisionan con otros procesos, eso sí está bien, pero cada proceso necesita tener asignado un gráfico. En tu caso, lineaAbajo no tiene asignado un graph, por lo que el gráfico del prota no puede colisionar con el gráfico de lineaAbajo.

En tu caso, puedes asignarle un gráfico creado en tiempo de ejecución con new_graph... pero ojo, estás empleando drawing_z, drawing_color y draw_line sin asignar sobre qué gráfico lo estás haciendo (o al menos, no se ve en ese código), por lo que lo que estás pintando se hace sobre el graph=0 del file=0, o sea, el fondo de la pantalla.

Ojo con los new_graph, recuerda descargarlos cuando dejes de usarlos o se quedarán en memoria.

Si te quieres poner creativo y no estar usando funciones draw*, puedes crear un gráfico de 1 pixel de color rojo, y usar size_x o size_y para crear una línea con la que colisionar... y si te pones exquisito, usar angle para rotarla, y cuando termines, poner el alpha a 0 para que no se vea y siga usando la colisión.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Gabysantof

Muchas gracias Drumpi!!
Si. Voy por el sprite de 1 pixel y listo. Más Fácil. La idea era tener un límite en el dibujo para que el protagonista no pueda cruzar y armar un camino por el cual transitar. Estoy armando (muy de a poco) un beat em up. Gracias!!

Drumpi

Ok, que tengas suerte.
De todas formas, considera el uso de mapas de durezas en lugar de colisiones, para marcar el camino por donde pueda ir el protagonista. En eso, Bomberlink te puede ayudar mejor que yo, ya que tiene experiencia en el SoRR.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)