Christian
Membro
Membro
Autor
Mensagens: 51
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 45

Animar o último coração

Ter Mai 19, 2020 12:32 am

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?
 
grononmc
Colaborador
Colaborador
Mensagens: 52
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 95

Re: Animar o último coração

Ter Mai 19, 2020 10:30 am

Levando em consideração que você já possua a animação do coração, basta fazer desta forma:

// 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:
// 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.
 
Christian
Membro
Membro
Autor
Mensagens: 51
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 45

Re: Animar o último coração

Ter Mai 19, 2020 11:14 am

Isso é bem interessante.
Coloquei o operador ternário no GM:S 1 e dá erro. Ksks
 
grononmc
Colaborador
Colaborador
Mensagens: 52
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 95

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

Ter Mai 19, 2020 11:17 am

Vish kkkk, usa então da forma comum.

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);
}
1
 
Christian
Membro
Membro
Autor
Mensagens: 51
Registrado em: Sáb Jun 18, 2016 10:54 pm
Karma: 45

Re: Animar o último coração

Ter Mai 19, 2020 6:43 pm

Cara, deu super certo!!!! Muito obrigado!!!
Passei 3 dias tentando animar o coração. Obrigado de verdade!!! Cê é um mito!!!