Noticias

¡Ayuda a la Comunidad GM, haz una donación!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - juantrix666

Páginas: 1
1
Primero, perdonen las faltas de ortografia  :-[

Te muestro como lo hice :
Cree un objeto laser, con un sprite de un circulo (en mi codigo es sprite11) y se crea a partir del player, de ahi toma la direccion inicial segun el sprite si mira para un lado u otro.

Create:
Código: [Seleccionar]
largo = 10//largo del laser (cantidad de sprites)
vsp = 0 //velocidad vertical
hps = 0 //velocidad horizontal
laser[largo,1] = 0// array para almacenar las posiciones de cada sprite

for (i=0;i<largo;i++){//setea el array en 0's
    laser[i,0] = 0
    laser[i,1] = 0
}


if obj_player.image_xscale > 0{//la direccion depende de hacia donde mira el pj en mi caso

    hsp = 8

}else{

    hsp = -8

}

Step:
Código: [Seleccionar]
x += hsp
y += vsp

//la primer posicion del array siempre son las cordenadas actuales
laser[0,0]= x
laser[0,1]= y

//aca muevo todo los valores hacia la drecha y el ultimo es descartado
for (i=0;i<largo;i++){

    laser[largo-i,0] = laser[largo-i-1,0]
    laser[largo-i,1] = laser[largo-i-1,1]
}

//si detecta una colicion arriba o abajo y la velocidad vertical es no es 0 invierte la velocidad y si vps es 0 sale hacia arriba (esto porque al inicio el laser sale derecho y al primer rebote toma una direccion)
 if collision_line(x,y-sprite_yoffset-5,x,y+sprite_yoffset+5,obj_piso,1,1) && vsp != 0{
   
        vsp*= -1
   }else if vsp = 0{
   
       vsp = -8
   
   }
   //Si coliciona con un lateral se invierte la velocidad horizontal
   if collision_line(x-sprite_xoffset-5,y,x+sprite_xoffset+5,y,obj_piso,1,1){
   
        hsp *= -1
   
   }

Draw:
Código: [Seleccionar]
draw_sprite(sprite11,0,x,y)//dibujo el primer sprite

for (i=1;i<largo;i++){//Dibujo los demas sprites

    draw_sprite(sprite11,0,laser[i,0],laser[i,1])

}

Espero te sirva de algo.

Páginas: 1