Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: codex en Octubre 15, 2014, 07:00:52 PM

Título: como hacer lineas de vision con collision_line?(solucionado)
Publicado por: codex en Octubre 15, 2014, 07:00:52 PM
hola.

me gustaría saber si alguien sabe como hacer varias lineas de visión como en la imagen
usando el colision_line.
no me entero muy bien como poder usarlo gracias..

(https://imagizer.imageshack.us/v2/505x505q90/913/ED81Sf.png)
Título: Re:como hacer lineas de vision con collision_line?.
Publicado por: Clamud en Octubre 15, 2014, 09:01:13 PM
Hice un ejemplo, se dibujan flechas de los azules a los rojos sólo cuando pueden verse. La parte importante es el código que está en el evento "Draw" de "obAzul".
Título: Re:como hacer lineas de vision con collision_line?.
Publicado por: codex en Octubre 15, 2014, 10:21:30 PM
wow!! impresionante... muchas gracias
Título: Re:como hacer lineas de vision con collision_line?.
Publicado por: codex en Octubre 16, 2014, 07:26:08 PM
hola.


lo e estado integrando en mi juego.. pero me han salido un problema. hice este código.

[STEP EVENT]
///ataque
if activa=1{
with  unit_red

   if( collision_line(other.x,other.y,x,y,solid_parent,false,true) <0 ) {
      var en_linea;
      en_linea= collision_line(other.x,other.y,x,y,solid_parent,false,true) <0
     
        if (en_linea){       
          if not position_meeting(global.xx,global.yy,en_linea){
             field_controller.image_single=1   
          }
        }
       
    }else{
        field_controller.image_single=0
   
    }

}


este código en teoría hace que cuando pasas del ratón por encima de la instancia "unit_red" que supuesta mente se puede "ver", cambia la "image_single" del ratón hasta hay, bien... El problema; que lo hace en todas las instancias "unit_red" incluso en la que no puedes ver.  ¿alguna forma de solucionarlo?
gracias
Título: Re:como hacer lineas de vision con collision_line?.
Publicado por: Clamud en Octubre 16, 2014, 11:47:27 PM
Bueno, primero hay unos errores en el código:
Lo que entiendo es que quieres que la forma (o sprite) del puntero cambie cuando se coloca encima de un objeto "unit_red", pero sólo cuando el objeto jugador pueda ver ésa instancia, dime si es correcto, si es así creo que hay una forma más fácil para implementarlo.
Título: Re:como hacer lineas de vision con collision_line?.
Publicado por: codex en Octubre 17, 2014, 01:20:19 PM
si.. exactamente eso
Título: Re:como hacer lineas de vision con collision_line?.
Publicado por: Clamud en Octubre 17, 2014, 09:27:10 PM
Prueba con éste código:
[gml]
//si el puntero está encima de un objeto "unit_red"
if( collision_point(mouse_x,mouse_y,unit_red,false,true) > 0 )
{
    //y no hay un bloque en la línea que va del objeto jugador al puntero
    if( collision_line(x,y,mouse_x,mouse_y,obBloque,false,true) < 0 )
         cursor_sprite = spCursor1; //poner un sprite
    else cursor_sprite = spCursor0; //si no, poner el otro sprite
}
else cursor_sprite = spCursor0;
[/gml]
También necesitarás ejecutar ésta línea:
[gml]window_set_cursor( cr_none );[/gml]
Título: Re:como hacer lineas de vision con collision_line?. (solucionado)
Publicado por: codex en Octubre 18, 2014, 10:53:19 AM
hola... me fue muy bien.
lo adapte a mi juego con este código .

///ataque
if activa=1{
   
   
    if  collision_point(global.xx,global.yy,unit_red,false,true) >0
    {
    if (collision_line(x,y,global.xx,global.yy,wall_parent,false,true) <0 ){
          field_controller.image_index=1
               
        }else{
            field_controller.image_index=0
       }
   }else{
        field_controller.image_index=0 
   
    }


}


gracias!