Noviembre 23, 2009, 09:15:44 PM Ultima modificación: Noviembre 23, 2009, 09:35:49 PM por Alfonsos1
quiero saber como podria hacer que un objeto se divida en dos, repartiendo la vida que tiene con su nuevo "hijo".

es decir que pierda la mitad la la vida cree un nuevo objeto de si mismo con la mitad de la vida inicial.

para crear el objeto uso la funcion instance_create(x,y,obj) pero no se como hacer que se cree con la mitad de la vida.

Se me ocurrio crear una variable global que sea igual a la vida antes de multiplicarse,

entonses en codigoseria asi:

if(Multiplicarse)
{
global.VidaAntesDeMultiplicarse = vida
Vida = Vida/2
instance_create(x,y,object_index)
Multiplicarse = 0;
}


y luego un el evento createdel objeto poner

Vida = global.VidaAntesDeMultiplicarse/2


pero cuando se crea la primer instancia me sale error ya que desconoce la variable global.VidaAntesDeMultiplicarse

intente darle un valor a global.VidaAntesDeMultiplicarse en el evento room star y game star pero me sale el mismo error

No ser?a mejor que cuando el objeto se destruya se creen 2 nuevos objetos (iguales entre si) que tengan la mitad de energ?a del primer objeto?

Si eso es lo que quer?s hac?s 2 objetos. Uno "padre" y el otro "hijo"

O es de otra forma lo que quer?s hacer?
(Como que cuando le pegue, salga un "hijo" (con la "energ?a base" menos "la energ?a extraida con el golpe")

por ahora no me importa que salga una padre y uno hija o dos hermanos

lo que quiero es que cuando la variable Multiplicarse sea 1 se divida en dos nuevos objetos que tienen la mitad de la vida inicial.

A ver, no lo prob?, pero podr?a ser algo as?:

if (Multiplicarse) {
with (instace_create(x,y,object_index)) Vida = other.Vida/2;
Vida = Vida/2;
Multiplicarse = 0;
}



PD: revisa tu c?digo que pusiste "vida" y deber?a ser "Vida", esa es la desventaja de usar may?sculas. Mi consejo es no usar nombres tan largos para las variables ni que contengan may?sculas.

parese funcionar bien  :)

te falto una letra en instace_create

Citarwith (instace_create(x,y,object_index)) Vida = other.Vida/2;

que vendria a ser other?

en este caso seria el id del "padre" obiamente pero que hace espesificamete esa palabra?
porque devuelve el id del "padre"?

acaso es como salir de with por un instante?

#6 Noviembre 24, 2009, 12:05:05 AM Ultima modificación: Noviembre 24, 2009, 12:17:58 AM por Soujiro
Si, en este caso se refiere a la id de la instancia que ejecuta el "with", si por ejemplo lo utilizas en un evento tipo colisi?n (fuera de un with) el "other" se va a referir al id de la instancia con la que colisionas. Esos son los usos del "other".


Cita de: Alfonsos1 en Noviembre 23, 2009, 11:27:06 PM
te falto una letra en instace_create
ups, sry  :-[