Eu estou criando um jogo de plataformas 2D onde o jogador pode pressionar um botão e reiniciar o nível, apenas o personagem anterior também executará o nível ao mesmo tempo, como se estivesse voltando no tempo.
Sei que outros jogos já fizeram isso antes, e a maneira como pensei em fazê-lo é fazer com que o personagem do jogo tenha um conjunto de ações (ocioso, saltando, andando à esquerda etc.) e, em seguida, detecte alterações nessas ações e faça logon no uma lista junto com o tempo do jogo. Então, quando preciso que o personagem execute o nível novamente por conta própria, posso simplesmente passar pela lista alterando suas ações no momento certo.
Esse é o melhor jeito de fazer isso? Alguém tem alguma experiência nisso?
Obrigado.
2d
architecture
time-travel
Woody Zantzinger
fonte
fonte
Respostas:
EDITAR:
Por favor, veja a resposta de @ Bluescrn a esta pergunta; ele elabora pontos fracos na repetição de controles, em vez de vetores ou posições de movimento.
-
Você está no caminho certo. Aqui está a abordagem que eu usaria:
Controladores
Crie uma classe Controller que receba a entrada do teclado e a transmita ao seu personagem. No entanto, também tenha um registro do controlador exatamente quando as teclas importantes (por exemplo, setas, salto, etc.) foram pressionadas e quando foram liberadas. Armazenaria esse tipo de informação:
Um controlador possui dois modos:
Personagens
Quando seu objeto Personagem é construído, ele cria um novo Controlador para si. O personagem pode estar em um dos dois modos a qualquer momento:
Níveis
Um nível recém-iniciado
Quando você inicia o nível, crie um único personagem. Agora o nível começa e o jogador faz o que quer.
Quando o tempo é redefinido
Quando o nível for redefinido, faça três coisas:
Então o nível começa e o jogador faz o que quer.
fonte
Se estiver reproduzindo entradas gravadas, considere as implicações de quaisquer objetos em movimento / destrutíveis / interativos no mundo, que podem ter se movido ou alterado de estado quando as ações são repetidas
Além disso, a reprodução de entradas não funcionará exatamente se o seu jogo usar um intervalo de tempo variável. Você pode considerar uma atualização de jogo em tempo fixo (com interpolação para renderização de taxa de quadros variável)?
fonte
Existem muitos tópicos que cobrem sistemas de gravação / reprodução de jogos / etc, que provavelmente devem ser a pedra angular de suas descobertas anteriores.
Aqui está um: Como projetar um sistema de repetição
fonte
Gravar a entrada do teclado pode não ser tão útil no seu caso. No entanto, você pode gerar um spline com uma linha do tempo. Você pode até retroceder o tempo se for complicado com as forças que você precisa aplicar
fonte