Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: gudy en Diciembre 19, 2012, 12:25:19 AM

Título: disparo expansivo
Publicado por: gudy en Diciembre 19, 2012, 12:25:19 AM
 :) hey! colegas makeros de nuevo el gudy y sus pequeños problemitas, resulta que estoy haciendo un juego de horda zombie, en el cual va haber tres tipos de armas, una escuadra, un metra y una super gun shoot la cual quiero que sea de disparos expansivos, el problemas es como realizo eso en game maker y en gml, nose mi idea es hacer varias balasque al crearlas estas salgan en diferentes angulos pero serian muchos objetos por cada bala entonces nose como hacerle, un juego muy padre que pude checar es el super create box en ese juego esta el tipo de disparo que quiero con la shoot gun, les digo de este juego porque fue creado con game maker. alguien que se apiade mi y de mi ignorancia pero creo que ese efecto es para alguien muy avanzado. de antemano gracias y espero que me puedan ayudar.
sigan makeando 8)
Título: Re:disparo expansivo
Publicado por: romon_28 en Diciembre 19, 2012, 02:04:04 AM
Mira.. lo mejor es hacer varias instancias pero si vos decis que es un problema tendrias que verificar las colisiones con por ejemplo instance_place(x,y,objeto) o un collision_lineal(x1,y1,x2,y2,obj,??)
Eso tendrias que hacerlo en el mismo objeto "disparo".

Cuando se crea la instancia:
var In;
In = instance_create(x,y,Obj_Disparo);
for(i=0;i<20;i+=1)
{
In.Dir = direction+random(90)-45;
In.Vel = random(10)+10;
}



Ev_Create:
for(i=0;i<20;i+=1)
{
BalaX=x;
BalaY=x;
Dir=0;
Vel=0;
Impacto=false;
Explocion=0;
}

Ev_draw:
for(i=0;i<20;i+=1)
{
  if (Impacto==false)
{
  BalaX = x+cos(Dir*pi/180)*Vel;
  BalaY = y+sin(Dir*pi/180)*Vel;
  draw_sprite(sprite_index,image_single,BalaX,BalaY);
}

if (instance_place(BalaX,BalaY,Obj_zombi))
|| (instance_place(BalaX,BalaY,Obj_Solido))
{
  if (Impacto==false;)
{
  var In;
  if (instance_place(BalaX,BalaY,Obj_zombi))
{
  In=instance_place(BalaX,BalaY,Obj_zombi);
  with(In) instance_destroy();//Muere zombi, muere!!!
  Impacto=true;

}
  //Extra
  if (Explocion<sprite_get_number(Sp_Explocion))
  {
   draw_sprite(Sp_Explocion,Explocion,BalaX,BalaY);
  }
}
}


Tene en cuenta que tiene que existir un "Obj_zombi" y un "Obj_solido".

Nota: No lo he probado asi que es posible que tenga errores. Pero es para que tengas una idea nada mas.