Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Sildentech en Febrero 07, 2016, 07:19:00 PM

Título: .
Publicado por: Sildentech en Febrero 07, 2016, 07:19:00 PM
.
Título: Re:Sistema para cambiar Sprites
Publicado por: bygdle en Febrero 07, 2016, 07:26:40 PM
¿Por qué no te sirve como lo haces? Porque los identificadores de sprites no son cadenas de texto, son constantes que equivalen a números identificadores de sprites.

¿Cómo lo arreglas?. Bueno, se me ocurre una idea: ds_maps. Ya que la llave de una ds_map sí es "llamable" por medio de strings, puedes usarlas para almacenar en una llave con el nombre de un sprite, el identificador del mismo sprite. La forma en la que lo podrías hacer es algo así:
[gml]
/*
Vamos a crear una simple array con los nombres de cada sprite del jugador:
*/
var sprites;
sprites[0] = spr_correr_1;
sprites[1] = spr_correr_2;
sprites[2] = spr_saltar_1;
sprites[3] = spr_saltar_2;
sprites[4] = spr_caminar_1;
sprites[5] = spr_caminar_2;

//Y crearemos una lista que almacenará el identificador del sprite en una llave que es el nombre del mismo:

los_sprites = ds_map_create();

//Añadimos los valores:
for(var i=0; i < array_lenght_1d(sprites);i++)
{
ds_map_add(los_sprites, sprite_get_name(sprites), sprites);
}
[/gml]

Así tienes la primera parte. Y cuando quieras llamar al sprite dependiendo de una variable, haces así:

[gml]
var variable = 2;
sprite_index = los_sprites[? 'spr_caminar_' + string(variable) ];
[/gml]

Ya después tú podrás modificarlo como desees, yo sólo te dí la idea ;D
Título: Re:Sistema para cambiar Sprites
Publicado por: Clamud en Febrero 07, 2016, 11:00:01 PM
Otra método es con la función asset_get_index
http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/asset_get_index.html (http://docs.yoyogames.com/source/dadiospice/002_reference/game%20assets/asset_get_index.html)