Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Marron121 en Junio 26, 2012, 01:14:08 PM

Título: Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: Marron121 en Junio 26, 2012, 01:14:08 PM
Bueno,esta es otra de mis superfamosas preguntas  :-[, y va de que en el videojuego PIXELES DE ANTAÑO (Cosita especial añadida para los fans de CGM :)) estamos desarollando una parte de PING PONG. He conseguido hacer powerUps,que funcionen,que la bola se mueva,etc. Y me gustaría saber si hay alguna manera de que el juego detecte que "palito" ha dado ultimo a la bola antes de que esta toque el powerUp

Gracias de antemano :D

PD: Dejo el deitable adjunto,para que podáis ayudarme :P
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: MaanuRP en Junio 26, 2012, 01:44:26 PM
Supongamos una variable: "ULTIMO" en el objeto de la bola.
Si tienes dos objetos distintos para cada palito, es simple, agrega colision con cada uno y haz que se modifique esa variable por "1" o por "2", entonces vas a saber cual fue el ultimo.
Si usas un solo objeto para los dos palitos, lo que podrias hacer es hacer que en la colision con el palito verifique en que estado esta esa variable, entonces si esta en "1", que se ponga en "2", y si ya esta en "2", que se ponga en "1".
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: romon_28 en Junio 26, 2012, 01:54:13 PM
create una variable global:

global.Golpeador=noone;

luego cuando un jugador golpee la pelota añadir*:

global.Golpeador=id;

Con esa variable vas a poder usarla para afectar directamente una instancia algo asi:
if instance_exists(global.Golpeador)
{
with(global.Golpeador)
{
  //lo que esta aca adentro le afecta al la instancia con el ultimo toque
  powerUp=1;
}
}

*podes hacelo mediante comprobacion de colision o comprobando la coordenadas de la pelota:
es ultima se puede hace algo asi:
if (Obj_Bola.x<Obj_Bola.x+16) {global.Golpeador=id;}
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: Marron121 en Junio 26, 2012, 01:56:36 PM
1o: GRACIAS POR RESPONDER TAN RAPIDO :) :) :)
2o: ME HA SURGIDO OTRA DUDA,COMO HAGO EN GML especificar que es una var :-[?
Me gustaría poner que si la variable ULTIMO es 1(por ejemplo) el objeto PowerUp vaya directamente hacia el Palo1
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: MaanuRP en Junio 26, 2012, 02:07:23 PM
Cita de: romon_28 en Junio 26, 2012, 01:54:13 PM
create una variable global:

global.Golpeador=noone;

luego cuando un jugador golpee la pelota añadir*:

global.Golpeador=id;

Con esa variable vas a poder usarla para afectar directamente una instancia algo asi:
if instance_exists(global.Golpeador)
{
with(global.Golpeador)
{
  //lo que esta aca adentro le afecta al la instancia con el ultimo toque
  powerUp=1;
}
}

*podes hacelo mediante comprobacion de colision o comprobando la coordenadas de la pelota:
es ultima se puede hace algo asi:
if (Obj_Bola.x<Obj_Bola.x+16) {global.Golpeador=id;}

Ya te respondio la duda y es una genial idea!
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: SobacoEnLlamas en Junio 26, 2012, 08:22:15 PM
yo pongo una variable, por ejemplo "ply" y cuando uno toca la bola le pongo un valor y cuando la toca el otro, pues otro valor xD y para lo que luego quieras (ejemplo pillar un item para saber quién lo pilla, pues le pones un if con la variable esa, para saber quién fue el último que tocó la bola.

PD: ni me he leido las respuestas de los otros xd
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: Marron121 en Junio 29, 2012, 10:23:20 AM
Primero de todo,gracias por las respuestas,me agrada ver que no paran de ayudar a los otros :D.

Luego,he usado lo de poner una variable y eso, y cambiar el valor cada vez,y al final me ha salido algo así:

if global.golpeador=1;
{
sprite_replace_sprite(Palo1Normal,Palo1Largo)
}
else
{
sprite_replace_sprite(Palo2Normal,Palo2Largo);
}


No se si es correcto,pero la función sprite_replace_sprite sirve para cambiar un sprite a otro ????


Lo malo,es que cuando intento iniciar el juego,me sale esto:

CitarFATAL ERROR in
action number 1
of Collision Event with object PowerUp1
for object obj.Bola:

COMPILATION ERROR in code action
Error in code at line 5:
   else
   ^
at position 2: Unexpected symbol in expression.

Lo he revisado con lo que he podido,pero no se que hacer :'(


PD: Si el código está mal,por favor ponedme el correcto  :-[

PD2: Me gustaría poner el editable,pero no se porque,desde mi portátil no me deja pasar los archivos GMK. Alguna idea? (Uso windows 7)
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: SobacoEnLlamas en Junio 29, 2012, 12:39:31 PM
pk no pasas el editable y te lo miro si quieres? xd
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: Marron121 en Junio 29, 2012, 12:40:38 PM
Cita de: SobacoEnLlamas en Junio 29, 2012, 12:39:31 PM
pk no pasas el editable y te lo miro si quieres? xd

No has leído el PD2,verdad :-X?
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: SobacoEnLlamas en Junio 29, 2012, 05:01:17 PM
no te deja pasar el qué a donde o a qué? porque no entendí eso... guardalo y lo subes donde te plazca, no hay misterio, gmk o el que te salga... o a a las malas sube el binario y ya lo rebiento yo mismo xD
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: Marron121 en Junio 29, 2012, 05:19:14 PM
Es decir, no podía pasar al USB el editable ( el archivo se llama GMK) para desde ahí pasarlo de este ordenador aqui. Un lio,la verdad :-X.

Ya esta pasado,se descarga arriba del todo :)
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: SobacoEnLlamas en Junio 29, 2012, 05:26:41 PM
ah vale... es porque no tienes internet en el pc donde lo haces?.. uf pues... chungo, pero probaste lo que te dije? es algo muy muy simple
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: Marron121 en Agosto 01, 2012, 12:03:50 PM
Bueno,vuelo a resuirgir este tema,pero sigo sin solución:
Lo que he hecho ha sido crear una variable global llamada golpeador, y dependieno de quien le da el valor cambia a 1,2o 3. El problema viene cuando quiero que se cambie el sprite del palo por uno mas largo. Que código puedo usar para que sea poosible?
Título: Re:Como se si tengo 2 objetos,quien es el último que ha dado a la bola?
Publicado por: Gunslito en Agosto 01, 2012, 04:42:38 PM
Podes bajarte la extension Extreme GML y utilizar el change_sprite(spr_speed) o simplemente cambiar el sprite_index=spr_detuobjeto