Página 1 de 1

Animar o último coração

Enviado: Ter Mai 19, 2020 12:32 am
por Christian
Fala galera, de boas?
Minha dúvida é a seguinte: como faço para animar sempre o último coração da barra de vidas?
Meu código tá assim:

Create event: vidas = 2;

Draw event:
for (i=0; i<=vidas; i++)
{
draw_sprite_ext(sprite_index,image_index,x+i*sprite_get_width(spr_coracao)+16, y, 1, 1, 0, image_blend, 1);
}
Consigo desenhar os três corações na tela, mas gostaria que sempre o último coração fosse animado.
Poderiam me ajudar?

Re: Animar o último coração

Enviado: Ter Mai 19, 2020 10:30 am
por Chuaschinai
Levando em consideração que você já possua a animação do coração, basta fazer desta forma:

Código: Selecionar todos

// Draw event
for (var i = 0; i < vidas; ++i) {
 draw_sprite_ext(sprite_index, (i < vidas-1) ? 0 : image_index, x+i*sprite_get_width(spr_coracao)+16, y, 1, 1, 0, image_blend, 1);
}
Ao invés de utilizar o image_index diretamente no subimg do draw_sprite, você pode usar uma condicional ternária, que funciona como um if e else em uma única linha de comparação:

Veja as diferenças:

Código: Selecionar todos

// Operador Ternário
(i < vidas-1) ? 0 : image_index;

// Condicional comum:
if(i < vidas-1){
 return 0;
}else{
 return image_index;
}
Quando você necessitar de mais de uma animação em um objeto, você precisará de alguma forma fazer alguma "gambiarra", pois o image_index é referente a sprite linkada ao objeto e somente a ela.

Re: Animar o último coração

Enviado: Ter Mai 19, 2020 11:14 am
por Christian
Isso é bem interessante.
Coloquei o operador ternário no GM:S 1 e dá erro. Ksks

Re: Animar o último coração  Tópico resolvido

Enviado: Ter Mai 19, 2020 11:17 am
por Chuaschinai
Vish kkkk, usa então da forma comum.

Código: Selecionar todos

for (var i = 0; i < vidas; ++i) {
var subimg = 0;
if(i < vidas-1){
 subimg = 0;
}else{
 subimg = image_index;
}
 draw_sprite_ext(sprite_index, subimg, x+i*sprite_get_width(spr_coracao)+16, y, 1, 1, 0, image_blend, 1);
}

Re: Animar o último coração

Enviado: Ter Mai 19, 2020 6:43 pm
por Christian
Cara, deu super certo!!!! Muito obrigado!!!
Passei 3 dias tentando animar o coração. Obrigado de verdade!!! Cê é um mito!!!