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 - Monigote

16
Cita de: MRafX en Septiembre 02, 2010, 10:39:37 PM
Cita de: Monigote en Septiembre 02, 2010, 07:19:55 PM

En evento Create:
invencible=0;

En evento de colision con el enemigo:

if invencible=0{
acciones de quitar vida;
invencible=1;}


Ahora surge un ligero problema: c?mo restaurar la variable invencible a cero para que vuelva a poder ser atacado por el enemigo.
eso seria facil, podrias poner una varible de tiempo, que cuando invencible=1 , tiempo+=1 ,cuando el tiempo llege a por ejemplo 30, invecible sea 0

Cuando dije eso, en realidad quer?a decir algo as? como: 'Ahora dir?s: ?c?mo restauro la variable invencible para que vuelva a ser atacado?', ya que luego yo mismo comento:
Cita de: Monigote en Septiembre 02, 2010, 07:19:55 PM
Volviendo al tema de la invencibilidad, ponle que al colisionar con el suelo la variable invencible vuelva a cero.

Vale, no me qued? muy claro cuando lo puse, pero en fin, la cuesti?n era solucionarle el problema y no me preocup? mucho de la presentaci?n. XD

En fin, wako91, tal y como ha dicho MRafX, tambi?n puedes hacer eso para restaurar la variable invencible, aunque yo te propongo otro m?todo similar para a?adirle adem?s el t?pico parpadeo de invencibilidad al recibir un golpe. Para esto, crea una timeline y a??dele los steps del 1 al 45 de 5 en 5 as?:


Step 1: visible=false
Step 5: visible=true
Step 10: visible=false
Step 15: visible=true
Step 20: visible=false
Step 25: visible=true
Step 30: visible=false
Step 35: visible=true
Step 40: visible=false
Step 45: visible=true; invencible=0


Esto lo pones en el evento de colision con el enemigo, junto con invencible=1, y conseguir?s un efecto de parpadeo temporal durante un segundo y medio aproximadamente.

Espero que estos truquillos y sugerencias te hayan servido. Cu?ntanos qu? tal te funcion?. :)
17
Cita de: wako91 en Agosto 31, 2010, 01:16:29 PM
...o si lo logro lo hacen de forma continua por lo que la vida del jugador se consume en unos segundos

Para solucionarte esto yo te aconsejo crear una variable que sea por ejemplo invencibilidad, entonces, primero la estableces a cero, y en el evento de colision del enemigo, antes de la linea de codigo que dice que le quita vida, pon que compruebe dicha variable. Si es cero, que le quite vida y que adem?s, la variable cambie a 1:


En evento Create:
invencible=0;

En evento de colision con el enemigo:

if invencible=0{
acciones de quitar vida;
invencible=1;}


Ahora surge un ligero problema: c?mo restaurar la variable invencible a cero para que vuelva a poder ser atacado por el enemigo.

Cita de: Kuroh en Septiembre 02, 2010, 04:06:58 AM
PD: Tambien te puede ayudar hacer que el enemigo te empuje cuando te ataque (asi no te toca infinitamente)
Cita de: wako91 en Septiembre 02, 2010, 01:03:05 PM
Eso ultimo me ha llamado, ?como podr?a hacer ese efecto?

Si te interesa eso, es f?cil, simplemente coloca en el evento de colision con el enemigo, aparte de las l?neas de c?digo de recibir da?o, que primero compruebe que el lugar hacia el que va a salir rebotado est? vac?o, y luego que vaya hacia ?l. Ser?a una cosa as?:

En el evento de colisi?n con el enemigo:
//Por ejemplo
if place_free(-4,-4){
x-=4;
y-=4;}


Con esto conseguir?s que tu personaje rebote hacia arriba y hacia atr?s cada vez que colisione con el enemigo. Volviendo al tema de la invencibilidad, ponle que al colisionar con el suelo la variable invencible vuelva a cero.

Cualquier duda me avisas.
18
Cita de: zerozerito en Septiembre 02, 2010, 04:32:34 AM
ami me gustarian 2 nuevos eventos

collision start
collision release

+1. Si estuvieran estos eventos ser?a una aut?ntica maravilla para todos los makeros.

Cita de: zerozerito en Septiembre 02, 2010, 04:32:34 AM
y que gm9 tuviera integrado un creador de modelos 3d (versiones pro)

otro +1. Ni que decir tiene lo ?til que ser?a.

Yo le a?adir?a adem?s, un simple creador de melod?as, aunque sean sencillas. Esto permitir?a que los juegos tuviesen posibilidades desde el principio de tener m?sica original. XD
19
Hola. Estoy haciendo un juego de plataformas a dos jugadores, cada uno con su view, y como Game Maker no permite que haya dos rooms a la vez lo que he hecho ha sido hacer un background muy grande, con las distintas dependencias del nivel en cuesti?n.
La cosa es que cuando el personaje se aproxima al final de un ?rea, la view no se detiene y permite ver la otra ?rea, causando un mal efecto.

He tenido que separar mucho las ?reas y poner bloques para que el personaje no avance y no las vea, pero preferir?a saber si se puede hacer que la view no siga avanzando(como cuando choca con el borde de la room) para evitarme estos problemas y hacer los backgrounds lo menos extensos posible para ahorrarme tiempo de carga.

Gracias de antemano. :)
20
Hola. Estoy haciendo un juego de plataformas en el que dos jugadores pueden jugar simult?neamente, cada uno en una view. Tengo un objeto que para uno es como si no hubiera nada y para el otro es un bloque s?lido, pero no s? c?mo hacer que para la view del primer personaje (para el que el bloque es como si no hubiera nada) el bloque se vea semitransparente y para la view del otro no.

?Alguien sabe c?mo hacer esto?

Gracias de antemano :)
21
Siento haber tardado tanto en contestar, no me pude conectar antes. Cuando le ped? a nano que si sab?a c?mo solucionarlo me lo dijera por favor, decid? reintentar programar el objeto entero. No s? por qu?, pero el caso es que funcion? perfectamente. Tuve otro peque?o error, pero con a?adir +1 a una l?nea de c?digo (seguramente se deb?a a la altura del sprite) se solucion?. Ahora mismo me funcionan perfectamente los saltos y el spriteo as? que gracias de todas formas a todos :) .

Si alguien necesita que le ponga lo que que hice con el objeto que me avise, de todas formas seguramente lo pondr?.

Gracias otra vez a todos :) .
22
Si, es eso. Cuando atterizo en el suelo normal, el sprite cambia de manera correcta, pero al aterrizar en la plataforma jump-through se queda en el sprite de salto.
23
Hola. Estoy haciendo un juego de plataformas y en ?l tengo unas platafromas solidas, y otras que puedes atravesar desde debajo (jump-through). El caso es que los cambios de sprite en el suelo s?lido los hace correctamente, y en la plataforma jump-through no, se queda en la animacion de saltando y no s? por qu?. Hice un script con varios argumentos para especificar los cambios de sprite ya que de tantos errores que me sal?an me era m?s c?modo hacer un script y poner todos los cambios ahi.

Aqui los eventos del personaje:
Create:
//Variable para saber a qu? direccion miran
direccion=1
//Variable para saber si est?s en el aire
aire=0
//Variable para saber si nadas
nadando=0
//Variable para saber si corren mucho
atodapastilla=0
//Variable para saber cu?ndo puedes realizar el doble salto
doblesalto=2
//Variable para saber si est?s golpeado o no. Si lo est?s, normalmente el resto de eventos no te afectar?n
estado=0


Step:
//Activar la gravedad
if(place_free(x,y+1))
{
    gravity = 0.5;
}
else{
gravity=0
}
//L?mite de la velocidad vertical. Evita que el objeto caiga a una velocidad cada vez mayor
if (vspeed >= 12)
{
    vspeed = 12;
}
//Comprobar que est? en el suelo o en el aire
if gravity=0
{
    aire=0
}
else
{
    aire=1
}
if global.saludpersonaje>0{
//Si est?s cayendo sin remedio y aun te queda salud es mejor que dejes de estar en estado golpeado
if vspeed=12{
estado=0

End Step: (Dejo el script ya que en este evento s?lo est? la acci?n de ejecutarlo)
//argument0=personajeestaticoderecha, argument1=estaticoizquierda,argument2=corriendo derecha
//argument3=corriendoizquierda, argument4=corriendomuchoderecha, argument5=corriendomuchoizquierda
//argument6=saltandoderecha, argument7=saltandoizquierda, argument8=nadandoderecha,
//argument9=nadandoizquierda, argument10=escalando, argument11=golpeadoderecha, argument12=golpeadoizquierda
if estado=0{

if place_meeting(x,y,obj_cuerda){
sprite_index=argument10;
if speed=0{image_speed=0};
if not speed=0{image_speed=1};}

else{
if nadando=1{
if xprevious<x{sprite_index=argument8}
if xprevious>x{sprite_index=argument9}}

else{
if aire=0{
if speed=0 and direccion=1{sprite_index=argument0}
if speed=0 and direccion=2{sprite_index=argument1}
if xprevious<x and atodapastilla=0{sprite_index=argument2}
if xprevious>x and atodapastilla=0{sprite_index=argument3}
if xprevious<x and atodapastilla=1{sprite_index=argument4}
if xprevious>x and atodapastilla=1{sprite_index=argument5}}
if aire=1{
if xprevious<x{sprite_index=argument6}
if xprevious>x{sprite_index=argument7}
if xprevious=x and sprite_index=argument0{sprite_index=argument6}
if xprevious=x and sprite_index=argument1{sprite_index=argument7}
}
}
}
}
if estado=1{
if xprevious<x{sprite_index=argument12}
if xprevious>x{sprite_index=argument11}}


Colision con la plataforma jump through:
if vspeed>0&&yprevious+(sprite_height-sprite_yoffset)<=other.y+1
    {
    gravity=0;
    vspeed=0;
    y=other.y-(sprite_height-sprite_yoffset);
    doblesalto=2;
    if estado=1{
    estado=0}
    else{}
    }


Y eso es todo. El personaje se queda en el sprite de saltando, cambia de izquierda a derecha cuando se mueve en dichas direcciones, pero no cambia ni al sprite de est?tico ni al de andando (o corriendo, como pone en el script).

No se me ocurre qu? puede estar mal, ?alguien me echa un cable?

Gracias de antemano :)
24
Preguntas y respuestas / Plataformas estilo smash
Agosto 02, 2010, 04:27:50 PM
Pues eso. Estoy haciendo un juego de plataformas y no se me ocurre c?mo hacer que en ciertas plataformas el personaje al saltar las atraviese, y al caer sea un suelo normal. A?n me estoy iniciando en GML y no s? qu? funci?n usar.

?Alguien puede echarme una mano? :-[
25
Hola. Me gustar?a saber c?mo puedo hacer que mi personaje (de un juego de plataformas) al entrar en contacto con un enemigo haga como una especie de 'rebote' y salga ligeramente despedido en direccion contraria y hacia arriba. He probado con esto://Si el personaje est? yendo hacia la derecha
if direccion=1 and place_free(x-4,y-5){
x-=4;
y-=5;
}
//Si el personaje est? yendo hacia la izquierda
if direccion=2 and place_free(x+4,y-5){
x+=4;
y-=5;
}

Y el caso es que por muy despejado que est? el sitio el personaje no se mueve :o. Disminuye la vida, pero el personaje se queda quieto donde est?.

?C?mo lo hago correctamente? Perd?n si la respuesta es sencilla y mi pregunta muy noob, pero es que me estoy iniciando al GML y cada vez que intento avanzar me quedo bloqueado. :'(
26
Madre m?a que fieras... llevo 3 d?as modificando c?digo sin parar y copiando cosas de diversos engines para que en 10 minutos haga unos saltos y colisiones exactamente como yo quer?a... Much?simas gracias de verdad. :) :) :)

Cita de: Kakashi en Julio 26, 2010, 08:28:18 PM
Y quita eso de if gravity=0...La verdad no s? por que el quitarle la gravedad para lograr el salto, pero bueno.

Yo tampoco lo s?, supongo que se quedar?a ah? en uno de mis numerosos intentos de que funcionara XD.

Al final he cogido lo de if place_free(x,y+1) gravity=0.5 else gravity=0 de 3dgeminis y lo de if estado=1
{exit;}
else{
if place_free(x-4,y)
{
x-=4
}
};

de Kakashi, por si a alguien le interesa c?mo lo he dejado al final para solucionarlo.

Gracias otra vez. :)
27
Hola. Estoy haciendo un juego de plataformas y no s? qu? he programado mal, pero el caso es que cuando el jugador colisiona con el objeto suelo cuando este est? puesto como una pared y pulsas el boton de saltar y el de moverse a la derecha a la vez, 'escala' la pared y llega arriba sin el menor esfuerzo. He revisado cientos de veces el codigo, cambiado por otros de otros engines e incluso borrado y vuelto a empezar pero no funciona.
Pongo aqu? el c?digo que tiene en los distintos eventos:

Evento Create:
//Variable para saber si est?s en el aire
aire=0
//Variable para saber cu?ndo puedes realizar el doble salto
doblesalto=2
//Variable para saber si est?s golpeado o no. Si lo est?s, el resto de eventos se anulan hasta que te mueves
estado=0


Evento Step:
//Activar la gravedad
if(place_free(x,y+1))
{
   gravity = 0.5;
}
//L?mite de la velocidad vertical. Evita que el objeto caiga a una velocidad cada vez mayor
if (vspeed >= 12)
{
   vspeed = 12;
}
//Comprobar que est? en el suelo o en el aire
if gravity=0
{
   aire=0
}
else
{
   aire=1
}
//Si est?s cayendo sin remedio es mejor que dejes de estar en estado golpeado
if vspeed=12{
estado=0


Evento colision con el suelo:
//Operaciones propias de la colision con un suelo
move_contact_solid(direction, 12);
if not place_free(x,y+1){
gravity=0;
vspeed=0;
doblesalto = 2;}
if not place_free(x,y-1){
vspeed=0}
if not place_free(x+1,y){
hspeed=0}
if not place_free(x-1,y){
hspeed=0}
//Si est?s en estado golpeado pasas a estado normal
if estado=1{
estado=0}
else{}


Evento keyboard left (el de right es igual salvo por el x-=4, que es x+=4):
//Si no est?s en estado golpeado te mueves
if estado=1{}
else{
x-=4;
y+=0;
}


Evento keyboard pressed up:
//Si no est?s en estado golpeado saltas
if estado=1{}
else{
//Saltar
if doblesalto>0{
vspeed=-7;
doblesalto-=1;
}
if doblesalto=0{
}
if doblesalto<0{
}}


Espero que alguien me pueda echar un cable y decirme qu? he puesto mal. :)
28
Vale, la cosa pita, pero ahora me surge otro problema, que supongo que ser? bastante dif?cil de solucionar, y es que la barra de vida de un personaje se ve en la view de ese personaje y en la del otro.

Yo s?lo quiero que se vea en una de las dos views...?hay forma terrenal de hacerlo? :-[
29
if number of objects Misilrapido is Larger than 0
      if instance_nearest(x,y,all).object_index is equal to Misilrapido
            set Alarm 2 to 1
if number of objects Misil is Larger than 0
      if instance_nearest(x,y,all).object_index is equal to Misil
            set Alarm 1 to 1
if number of objects Lanzamisile is Larger than 0
      if instance_nearest(x,y,all).object_index is equal to Lanzamisile
            set Alarm 0 to 1

Sigue sin funcionar. Lo he puesto as? en D&D y ahora ni se mueve. Se queda est?tica en el punto que se cre?.
He puesto que compruebe el n?mero de instancias para evitar quede colgado al no encontrar instancias de ese tipo. Siento ser tan torpecillo :-[.
30
Hola. Estoy en mitad de un juego de plataformas el cual se puede jugar con dos personajes en pantalla partida, con 2 views diferentes. He intentado que cada personaje tenga su health bar independiente y que se dibuje en la view de cada personaje, pero mis cortos conocimientos de Game Maker no dan m?s de s?, aunque tampoco lo veo muy f?cil que digamos.
?Alguien tiene alguna idea de c?mo realizarlo?

He intentado poniendo esto en el evento draw de la vida de uno de los personajillos: draw_healthbar(xview_x[0],yview_y[0],xview_x[0]+50,yview_y[0]+10,.....

He pensado (y visto en alg?n foro en ingl?s) que poniendo el cero entre corchetes har?a referencia a la view donde debe ubicarse, pero es que ni siquiera reconoce la variable xview_x...

EDIT: Atontado de m?... la variable es view_xview... probar? ma?ana ya que tengo que irme a la cama, si sab?is c?mo poner las dos barras ir com?ntandolo que ma?ana lo miro y os cuento.