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

[Dúvida] Alguém fez os três últimos carros andarem sentido da direita? Sentido oposto aos carros de cima? Não sei qual valor alterar para os carros se moverem para a direita.

Copiei as imagens dos carros, e virei para a direita coloquei dentro do programa e declarei tudo certo, colisão tudo ok tbm, porém os carros que quero que andem para a direita andam de ré em sentido a esquerda, como os 3 primeiros carros. Acredito que no movimentaCarrosDireita e xCarrosDireita que precisa alterar os valores. Jogo: https://editor.p5js.org/Amanda_93/full/VQs8VMEcj

Meu código ficou assim nos carros:

let xCarros = [600, 600, 600];
let xCarrosDireita = [600, 600, 600];
let yCarros = [40, 96, 150]; 
let yCarrosDireita = [210, 270, 318];
let velocidadeCarros = [2, 2.5, 3.2];
let velocidadeCarrosDireita = [5, 3.3, 2.3];
let comprimentoCarro = 50;
let comprimentoCarroDireita = 50;
let alturaCarro = 40;
let alturaCarroDireita = 40;

function mostraCarro(){
    for(let i = 0; i < imagemCarros.length; i++){
  image(imagemCarros[i], xCarros[i], yCarros[i], comprimentoCarro, alturaCarro);
  }
}

function mostraCarroDireita(){
    for(let i = 0; i < imagemCarrosDireita.length; i++){
  image(imagemCarrosDireita[i], xCarrosDireita[i], yCarrosDireita[i], comprimentoCarroDireita, alturaCarroDireita);
  }
}

function movimentaCarro(){
    for(let i = 0; i < imagemCarros.length; i++){
        xCarros[i] -= velocidadeCarros[i];
        }
}

function movimentaCarroDireita(){
    for(let i = 0; i < imagemCarrosDireita.length; i++){
        xCarrosDireita[i] -= velocidadeCarrosDireita[i];
        }
}

function voltaPosicaoInicialDoCarro(){
    for(let i = 0; i < imagemCarros.length; i++){
        if(passouTodaATela(xCarros[i])){
                xCarros[i] = 600;
        }
    }
}

function voltaPosicaoInicialDoCarroDireita(){
    for(let i = 0; i < imagemCarrosDireita.length; i++){
        if(passouTodaATelaDireita(xCarrosDireita[i])){
                xCarrosDireita[i] = 600;
        }
    }
}

function passouTodaATela(xCarro){
    return xCarro < - 50;
}

function passouTodaATelaDireita(xCarroDireita){
    return xCarroDireita < - 50;
}
2 respostas
solução!

Amanda,

Achei interessante a sua ideia dos carros indo em direção oposta. Daí, nesse caso, pra corrigir os carros andando de ré, você também tem que ajustar todas as variáveis relacionadas ao 'CarrosDireita' para "direção oposta".

Assim, as minhas sugestões para o seu código são:

let xCarrosDireita = [0, 0, 0];      // '0, 0, 0'  pros carros partirem do lado esquerdo da tela

let velocidadeCarrosDireita =[-5, -3.3, -2.3];    // valores negativos, pros carros andarem da esquerda para a direita  

function voltaPosicaoInicialDoCarroDireita() { 
    for(let i = 0; i < imagemCarrosDireita.length; i++){ 
        if(passouTodaATelaDireita(xCarrosDireita[i])) {
            xCarrosDireita[i] = -50;     // '-50'  pro carro voltar para o lado esquerdo da tela
        }
    }
}   

function passouTodaATelaDireita(xCarroDireita) { 
    return xCarroDireita > 650;     //  '> 650'  para a função verificar o carro que passa a tela do lado direito
}    

Mais uma coisa... ao invés de alterar 'velocidadeCarrosDireita' para valores negativos, também poderia alterar o 'movimentaCarrosDireita' igual você comentou. Nesse caso, ficaria:

let velocidadeCarrosDireita = [5, 3.3, 2.3];   // ficaria igual a sua primeira versão

function movimentaCarroDireita(){
    for(let i = 0; i < imagemCarrosDireita.length; i++){
        xCarrosDireita[i] += velocidadeCarrosDireita[i];    // aqui mudaria o sinal de - para + . Dessa forma, o carro aumenta o valor de 'x', indo para direita.
        }
}