Hola! me explico, tengo varios sprites y necesito seleccionar y dibujar uno de ellos al azar, yo lo estoy realizando de la siguiente manera:
Create:
[gml]
//selecciona el nombre del sprite al azar
irandom_range(1, 4);
switch(num){
case 1: {tcar = "car1"; break}
case 2: {tcar = "car2"; break}
case 3: {tcar = "car3"; break}
case 4: {tcar = "car4"; break}
}
[/gml]
y luego en Draw coloco lo siguiente:
[gml]
draw_sprite(tcar,-1,x,y);
[/gml]
Creo que mi problema es que el codigo draw_sprite esta tomando el nombre de la variable "literalmente" y no el contenido de ella... como podria solucionarlo?
Saludos y gracias!
Pon esto en el evento create :):
[gml]
a=ceil(random(4));
if a=1{sprite_index=car1;}
if a=2{sprite_index=car2;}
if a=3{sprite_index=car3;}
if a=4{sprite_index=car4;}[/gml]
Hola Delios, gracias por responder! lo que ocurre es que dibujo varias cosas en el evento draw como sombras y ese tipo de cosas y tu sabes que cuando uno utiliza el evento draw no se dibuja el sprite :(
;)
S?, cierto, entonces (creo que es la forma m?s sencilla) podrias cambiar el nombre de los sprites: "car1" por "1","car2" por "2", etc.
As? el valor de la variable corresponder? al sprite :)
Otra manera seria poner esto en el event Draw:
[gml]
var a;
a=ceil(random(4));
if a=1{draw_sprite(car1,-1,x,y);}
if a=2{draw_sprite(car2,-1,x,y);}}
if a=3{draw_sprite(car3,-1,x,y);}}
if a=4{draw_sprite(car4,-1,x,y);}}[/gml]
:( no funciona...
:( Cierto, me equivoqu?.
Pon esto en Create:
[gml]a=ceil(random(4));[/gml]
y esto en Draw:
[gml]if a=1{draw_sprite(car1,-1,x,y);}
if a=2{draw_sprite(car2,-1,x,y);}
if a=3{draw_sprite(car3,-1,x,y);}
if a=4{draw_sprite(car4,-1,x,y);}[/gml]
XD justamente estaba por escribir que lo habia solucionado de esa manera! muchas gracias!
Una nota extra: En vez de usar
[gml]a = ceil(random(4));[/gml]
es recomendable usar
[gml]a = floor(random(4)) + 1;[/gml]
porque random puede devolver 0, y ceil(0) es 0.
Es poco probable, pero si random llega a devolver 0 en el c?digo que postearon antes, no se ejecutar?a ninguno de los ifs consiguientes.
Por esa razon mi profe siempre decia: en la programacion debeis contar empezando por el 0 XD luego pasa lo que dice Wadk.
Exacto.