codinggames

Salvando progresso do jogador com checkpoints no Phaser JS - Skate Platformer Game Devlog #12

Escrito em 19 de novembro de 2020 - 🕒 1 min. de leitura

Fala pessoal! No vídeo de hoje vou mostrar como eu fiz para criar um checkpoint para o herói no meu jogo de uma maneira bem fácil.

Bom, eu basicamente fiz tudo em duas etapas. Primeiro, defino um overlap entre o herói e meu objeto de checkpoint e, dentro da função de callback, salvo a posição atual do herói para ser usada posteriormente.

const checkpoint = new Checkpoint();
const overlap = this.physics.add.overlap(
  this.player,
  checkpoint,
  (objectA, objectB) => {
    checkpoint.setAnimation('save');
    overlap?.destroy();

    // save it to the browser local storage
    localStorage.setItem('hero_checkpoint', JSON.stringify({
      x: hero.x,
      y: hero.y,
    }));
});

E no final da minha função create da minha scene, eu coloco o herói na nova posição salva de antes.

const heroCheckpoint = localStorage.getItem('hero_checkpoint');
if (heroCheckpoint) {
    const position = JSON.parse(heroCheckpoint);
    this.player.setX(position.x);
    this.player.setY(position.y);
}

// always remove the key just in case
localStorage.removeItem('hero_checkpoint');

E é isso. Super simples, certo? Desculpe pelo devlog curto esta semana, mas eu tive um pequeno acidente na minha mão, como falei no vídeo, e me impossibilitou de programar por uns dias.

Essa semana, o novo Hyrule Warriors será lançado, então não posso prometer que farei novos devlogs também 😬 mas vou tentar!

Tags:


Publicar um comentário

Comentários

Nenhum comentário.