Pessoal, estou modificando o código da aula, e agora, o personagem dá respawn sempre na mesma posição, e não na mesma coordenada y em que ele estava ao "morrer".
Além disso, criei movimentos para cima, para baixo, e para os lados.
Agora, estou tentando limitar os movimentos da vaquinha.
Conseguindo tudo, menos a parte direita.
Alguém poderia me ajudar, por gentileza? :)
Segue o código do arquivo ator.js:
// Código do ator
let xAtor = 100;
let yAtor = 366;
let colisao = false;
let meusPontos = 0;
function mostraAtor() {
image(imagemDoAtor, xAtor, yAtor, 30, 30); // X, Y, largura, altura
}
function movimentaAtor() {
if(keyIsDown(UP_ARROW)) {
if(podeSeMoverCima())
yAtor -= 3;
}
if(keyIsDown(DOWN_ARROW)) {
if(podeSeMoverBaixo())
yAtor += 3;
}
if(keyIsDown(LEFT_ARROW)) {
if(podeSeMoverEsquerda())
xAtor -= 3;
}
if(keyIsDown(RIGHT_ARROW)) {
if(podeSeMoverDireita())
xAtor += 3;
}
}
function verificaColisao() {
//CollideRectCircle(x1, y1, width1, height1, cx, cy, diameter)
for(let i = 0; i < imagemCarros.length; i++) {
colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarros, alturaCarros, xAtor, yAtor, 15) // diametro um pouquinho menor para uma melhor colisão
if(colisao) {
voltaAtorParaPosicaoInicial();
somDaColisao.play();
if(meusPontos > 0){ // Perguntar no fórum da Alura - Só assim funcionou
meusPontos -= 1;
}
}
}
}
function voltaAtorParaPosicaoInicial() {
yAtor = 366;
xAtor = 100; // minha adição
}
function incluiPontos() {
textAlign(CENTER);
fill(color(255,240,60));
textSize(25);
text(meusPontos, width / 5, 28);
}
function marcaPonto() {
if(yAtor < 15) {
meusPontos += 1;
somDosPontos.play();
voltaAtorParaPosicaoInicial();
}
}
function podeSeMoverBaixo() {
return yAtor < 366;
}
function podeSeMoverCima() {
return yAtor < 400
}
function podeSeMoverEsquerda() {
return xAtor > 0
}
function podeSeMoverDireita() {
return xAtor < 500
}
Abraços!
P.S.: o link para o o projeto é esse: