Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Mais uma dúvida de imobilidade do ator

Olá! Eu vi várias dúvidas no fórum parecidas, mas não consigo achar o erro no meu código e preciso de ajuda. Já conferi a chamada da função no draw, o clique na tela antes de tentar mexer o personagem, conferi o código e mudei de navegador, só que nada adiantou ou eu não consegui enxergar onde está o erro. Alguém poderia me ajudar? Segue o código:

https://editor.p5js.org/hypatia_ap/sketches/mGUD497_i

Muito obrigada!!

3 respostas
solução!

Ola Ana, Tudo bem? vamos la:

A sua função de movimentar o personagem esta correta:

function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    yAtor -= 3;
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3;
  }
}

Ela atribui o valor 3 na variavel yAtor toda vez que o usuário aperta para baixo ou pra cima, porem na sua função onde você mostra o ator tem um erro, você esqueceu de colocar a variável yAtor , então o eixo Y vai estar sempre com um valor fixo :


function mostraAtor(){
  //o que vai desenhar, posição x, posição y, altura, comprimento da imagem
  image(imagemDoAtor,100,366,30,30);
}

O correto seria colocar a variável yAtor no lugar de 366

desse jeito:

function mostraAtor(){
  //o que vai desenhar, posição x, posição y, altura, comprimento da imagem
  image(imagemDoAtor,100,yAtor,30,30);
}

Aqui esta seu código completo funcionando:

//arquivos
let imagemDaEstrada;
let imagemDoAtor;
let imahemCarro;

//ator
let yAtor = 366;

//carro
let xCarro = 600;

function preload(){
  imagemDaEstrada = loadImage("Imagens/estrada.png");
  imagemDoAtor = loadImage("Imagens/ator-1.png");
  imagemCarro = loadImage("Imagens/carro-1.png");
}

function setup() {
  createCanvas(500, 400);
}

function draw() {
  background(imagemDaEstrada);
  mostraAtor();
  mostraCarro();
  movimentaCarro();
  movimentaAtor()
}

function mostraAtor(){
  //o que vai desenhar, posição x, posição y, altura, comprimento da imagem
  image(imagemDoAtor,100,yAtor,30,30);
}


function mostraCarro(){
  image(imagemCarro,xCarro,40,50,40);
}


function movimentaCarro(){
  //o -= garante o loop
  xCarro = xCarro -= 2;
}

function movimentaAtor(){
  if (keyIsDown(UP_ARROW)){
    yAtor -= 3;
  }
  if (keyIsDown(DOWN_ARROW)){
    yAtor += 3;
  }
}

Espero ter ajudado.

Exato!!!!! Perfeito! Não conferi a função de mostrar o ator realmente. Agradeço demais, Leonardo!!!

Denada Ana, fico feliz em ter ajudaod