1
resposta

Direção alterada do carro não retorna para posição inicial do carro

Olá! Tentei mudar a direção de três carros para outro sentido. No meu ver deu certo, porém não estou conseguindo retornar para posição inicial depois que os carros mudados de direção saiam da tela do jogo. Tentei fazer algo parecido como foi na aula em relação function VoltaParaPosicaoInicial ( ), mas não deu certo. Vocês teriam alguma dica de como solucionar este problema? Obrigado! https://editor.p5js.org/Rodrigo-24/sketches/pNsxQaQXl

1 resposta

Fala Clay! Tudo Certo? Eu vi o seu código e o problema em fazer os carros retornarem é que todos estão no mesmo array. quando ocorre isso todos estão retornando da posição 600 como vc tinha colocado na função VoltaParaPosicaoInicial ( ). Isso faz com que a função voltaPosicaoFinalDoCarro() não funcione.. Para conseguir fazer com que os carros retornem na posição inicial eu sugiro separar três carros em um array e três em outro e separar as funções como eu fiz : https://editor.p5js.org/ric.asjunior/sketches/UkWJt4eJH .

carro.js


let xCarros = [600, 600, 600];
let yCarros = [45, 101, 155];
let velocidadeCarros = [2, 2.5, 3.2];


let xCarrosDois = [00, 00, 00];
let yCarrosDois = [210, 270, 318];
let velocidadeCarrosDois = [-5, -3.3, -2.3];

let comprimentoCarro = 40;
let alturaCarro = 30;

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

function mostraCarroDois(){
  for (let i = 0; i < imagemCarros.length; i++){
    image(imagemCarros[i], xCarrosDois[i], yCarrosDois[i], comprimentoCarro, alturaCarro); 
  }
}



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

function movimentaCarroDois(){
  for (let i = 0; i < imagemCarros.length; i++){
    xCarrosDois[i] -= velocidadeCarrosDois[i];
  }
}

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

function voltaPosicaoInicialDoCarroDois(){
  for (let i = 0; i < 3; i++){
    if (passouTodaATelaDois(xCarrosDois[i])){
      xCarrosDois[i] = -50 
    }
  }
}

function passouTodaATela(xCarros){
  return xCarros < -50;
}
function passouTodaATelaDois(xCarrosDois){
  return xCarrosDois > 500
}

schetch.js

function setup() {
  createCanvas(500, 400);
  // somDaTrilha.loop();

}

function draw() {
  background(imagemEstrada);
  mostraAtor();
  movimentaAtor();
  mostraCarro();
  mostraCarroDois();
  
  movimentaCarro();
  movimentaCarroDois();
  
  voltaPosicaoInicialDoCarro();
  voltaPosicaoInicialDoCarroDois();
  
  verificaColisao();
  incluiPontos ();
  marcaPonto();
}