Mostrar Mensajes

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

Mensajes - computerguyhunter

1
EL archivo que he subido contiene todo lo que expliqué, puedes revisar el código fuente, usé  :GM8:
Cualquier pregunta déjame un mensaje y trataré de solucionarlo :)
2
Otra idea es que si quieres que tu enemigo te miré también diagonalmente añade esto:


// STEP EVENT
if e_walk=false then image_angle=point_direction(x,y,personaje.x,personaje.y);



subiré un ejemplo de esto en unos minutos...
3
Voy a tratar de ayudar por lo que voy entendiendo tu idea



//CREATE EVENT
e_walk=true;//variable que acepta que el enemigo camine por donde quiera.
e_moving=0;//variable que elige la dirección donde irá el personaje
alarm[0]=room_speed*2; //cada cuanto tiempo e_moving cambiará su valor para que camine en cierta dirección

//ALARM  0 EVENT
e_moving=choose(0,1,2,3,4);
alarm[0]=room_speed*2;

//STEP EVENT
if (distance_to_object(personaje)<60) then e_walk=false;
else e_walk=true;

  //enemigo vagando... los sprites los colocas a tu gusto
   if (e_walk==true)
   {
     switch(e_moving)
      {
       case 1: x+=4;break;// DERECHA
       case 2: x-=4;break;// IZQUIERDA
       case 3: y+=4;break;// ABAJO
       case 4: y-=4;break;// ARRIBA
       }
   }


no especificaste si la dirección de la mirada del enemigo al personaje puede también aceptar de forma diagonal
considerare que quieres que te mire horizontal o verticalmente:

//CREATE EVENT
y2=20;//altura del enemigo
x2=20;//ancho del enemigo
//STEP EVENT
if (e_walk==false)//el enemigo va a mirar
{
  if(personaje.y>y+y2) then sprite_index=e_sprt_up;//Arriba
  else if(personaje.y<y) then  sprite_index=e_sprt_down;//Abajo
  else if (personaje.x>x+x2) then sprite_index=e_sprt_right;//Derecha
  else if(personaje.x<x) then sprite_index=e_sprt_left;//Izquierda
}
4
Preguntas y respuestas / Re:juego tipo la botella
Mayo 18, 2014, 08:20:17 PM
Vamos por partes, lo primero es que quieres que la botella de la vuelta como el conocido juego de la botella (en mi país creo que le llaman la botella borracha) entonces una idea es hacer siguiente:

crea un control(un botón, una condición de que si aprieto una tecla, etc) para que ejecute lo siguiente


/*cuando el la condición del control se cumpla (ubicas este código en tu objecto botella en el step pero no en el evento create)*/
image_angle=random_range(0, 360);

5
haber si te entiendo quieres que al matar a tu enemigo ,que aparece según tu decisión al correr el respectivo "room" con una ubicación del enemigo cuando empezó el juego, ¿verdad?

sería algo así el código:

//los enemigos deben tener variables que sepan donde exactamente ellos se originan:
//evento create -  objeto enemigo-
  origin_x=x;/*origenes del enemigo: eso depende de que ubicación esten en mapa; por lo tanto esos valores se guardarán en estas variables*/ 
  origin_y=y;
  elife=100;//vida del enemigo supongo que tu lo has hecho de otra manera
//acción de dato de tu personaje al enemigo ,por ejemplo:
   //puñetazo:
  var eid;//identificación del enemigo
  if keyboard_check_button(vk_control) and distance_to_object(obj_enemigo)<1
  {
    eid=instance_nearest(x,y,obj_enemigo);//los puntos centrales de tu personaje indicarán, que objeto está más cerca a este
    eid.elife-=10;//le quito parte de la vida al objeto que está más cerca de mi puñete
    if eid.life<=0
   {
    instance_create(eid.origin_x,eid.origin_y,obj_enemigo);// se crea "OTRO" enemigo aparte del que tienes su ID
    eid.instance_destroy();//el enemigo se destruye, pero tiene un nuevo enemigo
   
    }
  }





si necesitas más ayuda o una explicación detallada del código, no dudes en consultarmelo.
6


//Eventos de Acción con el mouse

if mouse_check_button_pressed(mb_left)

/*para declarar los  botones del dispositivo mouse se utiliza mb_  e instantáneamente verás que aparecera el resto de botones*/

7
Preguntas y respuestas / Re:animacion objeto
Marzo 30, 2014, 05:11:57 PM
Hay varias formas de hacer que aparezca esa animación de puntaje, no sé si quieres que aparezca o bien encima de la cabeza del personaje o sobre la moneda que rompiste.

voy a hacer como si quisieras que salga encima del personaje. si no, entonces modificas solamente las coordenadas del dibujo de tal animación hacia otro objeto (me refiero a la moneda).

Para ello vamos a crear una variable que detecte que una moneda se añadió al puntaje de nuestro personaje(colisionó).


//evento create:
colisionando_moneda=false;//variable que detecta si ha colisionado con una moneda
an=0;//variable de animación (para que recorra todos las subimagenes de tu animación)

//evento step:
//generar colisión

if distance_to_object(obj_moneda)<1
{
colisionando_moneda=true;
with(obj_moneda){instance_destroy();}
}

//evento draw:
  if colisionando_moneda==true //cuando termine la animación, esta dejará de dibujarse
  {
  draw_sprite(spr_moneda_1,an,obj_personaje.x,obj_personaje.y-cuerpo);
  an+=1;
  }

  if an>=10 {//suponiendo que es valor maxímo de subimagenes
                  colisionando_moneda=false;
                  an=0;
                  }
 
8
Preguntas y respuestas / Re:ayuda con esto
Marzo 29, 2014, 12:48:37 AM
Haber si te entiendo, depende de esto variará el código para la solución del problema planteado, tú has creado un juego que conduce a varios personajes pero, ¿los conduce a la vez? o ¿los conduce intercambiando controles?.
me explico: osea aprieto un botón x para cambiar de personaje o héroe a manejar.
bueno en todo caso lo que puedes haces es jugar con las instancias. por lo que entiendo sólo tienes 2 héroes, ¿no?
igual puedes apuntar su ID antes que comienze el juego para que los valores recaigan en ellos; es decir:


//en el evento create
heroe[0]=instance_create( x, y, obj_heroes);
heroe[1]=instance_create( x, y, obj_heroes);

HvsE[0]=false;//variable que muestra si nuestro personaje esta en posición de pelea
HvsE[1]=false;

EID[0]=0;//variable que muestra con quien(con que instancia) el heroe está peleando.
EID[1]=0;

SetControlsTo=heroe[0];//da los controles a la instancia o primer heroe por defecto, el resto depende de ti.


//en el evento step

with(heroe[0])
     {
     if distance_to_object(obj_enemigo)<0{
                                                        temp=instance_nearest(x,y, object_enemigo);/*cuando el enemigo este cerca del heroe que le de a nuestra variable */      if temp!=EID[1] {/* si el enemigo que está cerca a ti es diferente con el que está peleado con el otro heroe*/
                                                                            HvsE[0]=true;
                                                                            EID[0]= temp; }/*si no se cumple está condición simplemente el héroe ignorará el enemigo que está luchando con tu otro héroe.*/                                                       
                                                         
                                                         }
      }

//generar controles para la instancia dada a SetControlsTo
with(SetControlsTo){//los controles que le quieras dar depende de ti
  if keyboard_check_button(ord('A')) then x-=2;
  else if keyboard_check_button(ord('D')) then x+=2;
} //lo que puedes hacer con esto es que si tu heroe[0] está ocupado con un enemigo entonces le quitas los controls
   //ejemplo:
   if  HvsE[0]==true then SetControlsTo=HvsE[1];//entiendes?
   


Bueno cualquier duda que tengas me avisas para explicarte pero, si realmente querías que tus heroes sean controlados a la vez, por una parte puedes cambiar el código de SetControlsTo.

crea un bucle para que recorra los datos del heroe[0] y heroe[1]. no lo hice porque tengo que explicar a que héroe recaerá la acción cuando las variables del otro estén ocupadas.
9
Preguntas y respuestas / Re:ayuda con plataforma
Marzo 04, 2014, 06:56:01 PM
Haber si te entiendo lo que quieres es que tu personaje al saltar desde una plataforma "A" a una "B" si es que él está debajo de "B", este no le impida pararse sobre él?.
bueno eso es lo que entendí, seguro tal objeto tiene la propiedad de colisionarse con tu personaje y que ambos al colisionar no se pasen.
Especificar Acciones Cuando el personaje está cerca de una plataforma

/*puedes usar la función distance_to_object, pero en este caso yo también usaré con las coordenadas del objeto "Plataforma"
te recomiendo que pongas el origen de las ordenadas( eje Y) de la imagen  de tu plataforma*/
//en el evento Step del personaje pones el siguiente código:
if distance_to_object(plataforma)<1 and y<plataforma.y{
y=plataforma.y;//esto variará dependiendo a lo que quieres hacer más adelante
}


Explicación lo que estoy haciendo es ordenar al personaje que cuando este sobre la plataforma (se generará la condición de que su eje y va a ser menor que el y del personaje) y va cuando este cerca de este mismo (con la función distancia al objeto) el personaje estará a la altura de la plataforma; puedes poner más condiciones para crear un comportamiento más complejo de la plataforma.
10
La manera más eficaz de hacerlo sin importar el tamaño de tu barra es usando el tema de porcentajes; es decir, que el tamaño de tu barra (sea 200px o 400px) sea el 100%; asimismo, como 45 es el 100%.


/*Create (creamos la variable tiempo en su máximo valor (en este caso haré el máximo puedes invertirlo si deseas) y creamos la alarma también crearé una variable llamada conteo que recibirá el tamaño máximo de la barra)*/
tiempo=45;
conteo=0;
alarm[0]=room_speed*1;

//en tu alarm[0]
alarm[0]=room_speed*1;
tiempo-=1;

//Finalmente en el evento Draw
//aca el 100% seria el valor 200
draw_set_color(c_white);
draw_rectangle(x,y,x+200,y+30,true);
draw_set_color(c_green);
conteo=200*(tiempo*100/45)/100;// la barra baja de tamaño proporcionalmente gracias a que depende de porcentajes
if conteo>0 then draw_rectangle(x,y,x+conteo,y+30,false);

/*CONCLUSIÓN: EL TAMAÑO DE LA BARRA BAJA CON RESPECTO A SU PORCENTAJE; ES DECIR, SI "TIEMPO" AL PASAR UN SEGUNDO A BAJADO UN 2%; ASIMISMO, BAJARA UN 2% EL TAMAÑO DE LA BARRA PERO CUANDO "TIEMPO" HAYA BAJADO A CERO
BAJO SU 100% Y CUANDO BAJA ESA CANTIDAD TAMBIÉN BAJARÁ LA BARRA UN 100% QUE PARA LA BARRA ES TODO SU TAMAÑO.*/
11
Preguntas y respuestas / Re:[AYUDA] Bomberman
Febrero 01, 2014, 06:51:51 AM
lo puedes hacer de muchas formas:
una de ellas es dejar la bomba a una cierta distancia desde la ubicación de tu personaje
Bomba a distancia del objeto

//depende de la dirección del personaje
/*"fuera" es tu variable que representa la distancia que consideres suficiente lejos de tu personaje(desde su punto centro, considera su punto centro de coordendas) no colisione con la bomba*/
if keyboard_check_pressed(vk_ctrl){
   switch(direccion)
  {
  /*EJEMPLO: cuando el sprite del personaje está mirando hacia la derecha es porque lógicamente vienes caminando
  por esa dirección y al momento que te detuviste sigues mirando esa dirección; por lo tanto, la bomba lo dejarás detrás tuyo*/
case "derecha":
instance_create(x-fuera,y,obj_bomba);
break;
case "izquierda":
instance_create(x+fuera,y,obj_bomba);
break;
case "arriba":
instance_create(x,y+fuera,obj_bomba);
break;
case "abajo":
instance_create(x,y-fuera,obj_bomba);
break;
}
}


otro modo puede ser el de que condiciones tus acciones; es decir, me refiero a que cuando pongas una bomba no se genere ningún tipo de acción que impida al personaje caminar pero cuando salgas apenas solo una vez se le asigne el valor a una variable
"cualquiera" y que cuando te vuelvas a acercar junto a tu bomba ya no puedas pasar a causa del cambio sufrido por tal variable.
Condicionando la acción

//creo una variable cualquiera
solidez=0;
//realizo las acciones
if distance_to_object(obj_bomba)>0 then solidez=1;
//como no hay un "else" (en otra condición) entonces, solidez seguirá siendo 1 y no cambiara más
//condición final
if distance_to_object(obj_bomba)<1 && solidez==1 {
//la condición que impide el movimiento (puede ser suya propia)
switch(direccion)
{//esto hará que el eje que está avanzando se reste con si mísmo y generara un impedimento al avanzar
case "derecha":
x-=1;
break;
case "izquierda":
x+=1;
case "arriba":
y+=1;
break;
case "abajo":
y-=1;
}
}
12
No es necesario que crees variables globales, simplemente tienes que escribir el punto de pertenencia de esa variables; es decir a que objeto pertenece tal variable y serán existentes en otros objetos.
Ejemplo:
Objeto PERSONAJE

//Evento create del objeto personaje
life=100


Objeto BARRA_DE_VIDA

//mensionar la variable de otro objeto poniendo el punto de pertenencia "."
draw_text(x,y,PERSONAJE.life)
PERSONAJE.life-=50