Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

SEQUENCIAS

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Klinton Rodrigues
Novato
Novato
Reações: 1
Mensagens: 11

SEQUENCIAS

Mensagem por Klinton Rodrigues » Dom Jun 25, 2023 10:14 am

Olá, estou com uma duvida:
Eu estou desenvolvendo um game o game meker, e estava afim de fazer animações por sequencias, então optei por:
Criar uma animação do player entrando na room e logo em seguida que a sequencia finaliza o objeto do player é instanciado e a animação é destruída, quando o player morre, aparece a animação do player morrendo e antes que apareça a animação o objeto do player é destruído, quando a sequencia acaba, logo surge outra dizendo "VOCÊ MORREU".
Porém quando vou por isso em código, acabo entrando em um loop, pois se o player não existe a sequencia escrita vc morreu aparece, e quando coloco para que essa animação apareça quando todas as outras não existem, ela simplesmente não aparece.
estou deixando aqui a minha linha de código para que analisem!
CRIAR:

alarm[0] = room_speed
criar_boss = true
pontos = 0;
level = 1
max_level = 10
proximo_level = 100
///@method ganha_pontos(pontos)
ganha_pontos = function(_pontos){
pontos += _pontos
if pontos >= proximo_level{
level ++
proximo_level *= 1.5
}
}
criar_inimigoslvl1jato = function(){
if room = rm_space1{
var xx = irandom_range(160,3584)
var yy = irandom_range(-256,-2048)
var xx2 = irandom_range(288,3584)
var yy2 = irandom_range(320,1056)
var inimigo = obj_inimigo1jato_fase1;
var inimigopanter = obj_inimigo5_fasejato1;
var chance = random_range(0, level)
if chance >= 2 {
inimigo = obj_inimigo2_fasejato1
}if chance >= 3{
inimigo = obj_inimigo3_fasejato1
}
if chance >= 4{
inimigo = obj_inimigo4_fasejato1
}
if chance >= 5{
instance_create_layer(xx2, yy2, "inimigos", inimigopanter)
}
instance_create_layer(xx, yy, "inimigos", inimigo)

}
}

if room_exists(rm_space1){
layer_sequence_create("jato_entrada",1856,1600, sq_entrada_jato)
}
game_overseq = noone



STEP:
if !instance_exists(obj_jatoplayer) && !game_overseq && !sequence_exists(sq_entrada_jato){
game_overseq = layer_sequence_create("game_over",0,0, sq_game_over)
}

Avatar do usuário
KanekiZLF
Membro
Membro
Reações: 4
Mensagens: 38
Localização: Para

Re: SEQUENCIAS

Mensagem por KanekiZLF » Qua Jun 28, 2023 1:11 pm

Boa tarde, tudo bem ?
Esse seu código esta dentro do player ? Porque se você destrói o objPlayer, seu código vai junto, sendo assim, impossível ele da a mensagem. Se for o caso é só você criar outro obj que seja o responsável por essas animações. Sobre animação de entrada do player, você tem a sprite de entrada? Se tiver, você pode cria uma variável para desativa os controles enquanto essa animação estiver sendo executada, e quando ela termina, você reativa os controles e segue animação padrão. Posso criar um código pra lhe ajudar, mas preciso saber se é isso que você quer !
Ninguém vai bater tão forte como a vida, mas a questão não é o quão forte você consegue bater. É o quão forte você consegue apanhar e continuar seguindo em frente.

Avatar do usuário
Klinton Rodrigues
Novato
Novato
Reações: 1
Mensagens: 11

Re: SEQUENCIAS

Mensagem por Klinton Rodrigues » Qua Jun 28, 2023 2:30 pm

Eu tenho um objeto controle que gerencia todas as ações das rooms, no inicio da Room o obj_player não existe ele só é criado apos a primeira sequencia acontecer.

Avatar do usuário
Klinton Rodrigues
Novato
Novato
Reações: 1
Mensagens: 11

Re: SEQUENCIAS

Mensagem por Klinton Rodrigues » Qua Jun 28, 2023 2:36 pm

O que está me pegando é que:
Dentro do objeto controle eu gerencio:
SEQUENCIAS:
Ou seja: Sequencia de entrada do player, criação do player após o termino da sequencia, morte do player onde o obj do player volta a deixar de existir, após o termino do da animação, vem a sequencia de game over.
Mas tudo isso vem entrando em conflito!

Avatar do usuário
KanekiZLF
Membro
Membro
Reações: 4
Mensagens: 38
Localização: Para

Re: SEQUENCIAS

Mensagem por KanekiZLF » Qua Jun 28, 2023 9:17 pm

Você quer que quando a animação de morte do player terminar, ai começa a sequencia de Game Over isso ? Se for o caso, faça o seguinte.

Crie um novo Script, este script será o responsável por verificar se a animação terminou.

Código: Selecionar todos

// Script assets have changed for v2.3.0 see
// https://help.yoyogames.com/hc/en-us/articles/360005277377 for more information
#region FimAnimacao
// Use este Script para definir oque sera feito após o fim da animação
function scrFimAnimacao(){
	/// @description animation_end(sprite_index,image_index, rate)
    /// @param {real} <sprite_index> The index of the sprite being animated
    /// @param {real} <image_index> The current frame value
    /// @param {real} <rate> -See Below-
    ///     The rate of change in frames per step if not
    ///     using built in image_index/image_speed.  
    ///     Don't use if you don't think you need this.  You probably don't.
 
    //returns true if the animation will loop this step.
 
    //Script courtesy of PixellatedPope & Minty Python from the GameMaker subreddit discord 
    //https://www.reddit.com/r/gamemaker/wiki/discord
 
    var _sprite = sprite_index;
    var _image = image_index;
    if(argument_count > 0)   _sprite = argument[0];
    if(argument_count > 1)  _image = argument[1];
    var _type = sprite_get_speed_type(sprite_index);
    var _spd = sprite_get_speed(sprite_index)*image_speed;
    if(_type == spritespeed_framespersecond)
        _spd = _spd/room_speed;
    if(argument_count > 2) _spd = argument[2];
    return _image + _spd >= sprite_get_number(_sprite);
}
#endregion
Feito isso, vamos agora em nosso Evento Etapa (Event Step):

Código: Selecionar todos

scrFimAnimacao(SPRITEDEMORTE) {
	game_overseq = layer_sequence_create("game_over",0,0, sq_game_over);
}
Dessa maneira, quando a sprite termina animação, ele vai executa a sequencia de game over.

Você também pode fazer a mesma coisa utilizando o evento Termino da Animação (End Animation):

Código: Selecionar todos

if (sprite_index == SPRITEMORTE) {
	game_overseq = layer_sequence_create("game_over",0,0, sq_game_over);
}
Testa, e me diz se deu certo !
Ninguém vai bater tão forte como a vida, mas a questão não é o quão forte você consegue bater. É o quão forte você consegue apanhar e continuar seguindo em frente.

Avatar do usuário
Klinton Rodrigues
Novato
Novato
Reações: 1
Mensagens: 11

Re: SEQUENCIAS

Mensagem por Klinton Rodrigues » Qui Jun 29, 2023 8:48 pm

Na verdade o que estou tentando fazer é algo talvez mais simples, veja:
Para que o jogador possa jogar é necessário que na room exista o player.
Porém primeiro é criada a sequencia de entrada do player. Ou seja todas as ações do player só acontecem após a sequencia acabar, pois ao fim da sequencia de criação do obj player toda a programação volta a funcionar.
Quando o jogador perde todas as vidas e morre, o objeto do player é destruido criando então outra sequencia, a sequencia do player morrendo.
Quando a sequencia da morte do player chegar ao fim é criada uma terceira sequencia, a de game over, onde o jogador poderá clicar na letra "F", e recomeçar a fase.
O que está me dando um nó é que:
Quando o objeto player não existe, automaticamente a tela de game over aparece, então eu faço:
quando consigo arrumar isso, ele aparece na entrada do jato, quando consigo arrumar esse outro tópico.
ele aparece no momento, mas o press F não funciona.
Vou deixar aqui uns prints e também o link para o projeto.
Anexos
3.jpg
3.jpg (20.1 KiB) Exibido 1704 vezes
2.jpg
2.jpg (22.6 KiB) Exibido 1704 vezes
1.jpg
1.jpg (10.77 KiB) Exibido 1704 vezes

Avatar do usuário
KanekiZLF
Membro
Membro
Reações: 4
Mensagens: 38
Localização: Para

Re: SEQUENCIAS

Mensagem por KanekiZLF » Sex Jun 30, 2023 3:25 pm

Boa tarde tudo bem ? Eu fiz algumas alterações e consegui colocar oque você pediu, veja se ficou como queria, ah eu baixei o som de fundo e acabei esquecendo de volta ao normal ! é só ir la no som e aumenta o volume dele !


tudo oque foi alterado vai esta assim, com essa bolinha vermelha

Imagem

Ja ia me esquecer, se você tive com dificuldade, use tudo oque tive a sua disposição pra aprende, eu mesmo uso demais o ChatGPT e o Reddit. Aprender nunca é demais, abraço !

Qualquer dúvida que tive sobre, manda msg aqui !
Ninguém vai bater tão forte como a vida, mas a questão não é o quão forte você consegue bater. É o quão forte você consegue apanhar e continuar seguindo em frente.

Avatar do usuário
Klinton Rodrigues
Novato
Novato
Reações: 1
Mensagens: 11

Re: SEQUENCIAS

Mensagem por Klinton Rodrigues » Sáb Jul 01, 2023 1:02 am

Cara, você foi muito mais além do que eu tinha planejado, o bom que vc ainda explico cada função que colocou, muito obrigado mesmo, vc por acaso da cursos? eu paguei por um, mas sinto que não estou aprendendo e quando aprendo é com muita dificuldade!
Muito obrigado mesmo!!
1 Imagem

Avatar do usuário
KanekiZLF
Membro
Membro
Reações: 4
Mensagens: 38
Localização: Para

Re: SEQUENCIAS

Mensagem por KanekiZLF » Seg Jul 03, 2023 3:41 pm

Eu te mandei uma mensagem privada ! Fico feliz que tenha lhe ajudado ! Abraço e fique em paz.
Ninguém vai bater tão forte como a vida, mas a questão não é o quão forte você consegue bater. É o quão forte você consegue apanhar e continuar seguindo em frente.

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante