1
resposta

Estou seguindo os passos da aula porém tentando fazer com minhas sprites.

A colisão do carro ocorre de forma estranha. O carro está colidindo em Y também numa faixa de 1cm de distancia do carro. Poderia me dar uma luz para o que poderia estar acontecendo? Obrigado pela atenção.

Segue os códigos.

//Sketch.js

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

function draw(x,y) {

background(imagemDaEstrada);

mostraAtor(); mostraCarros(); movimentaCarros(); movimentaAtor(); voltaPosicaoInicialDoCarro() verificaColisao();

} //Loading Atores; let imagemDaEstrada; let imagemDoAtor; let imagemCarroVermelho; let imagemCarroVerde; let imagemCarroAzul; let imagemTruckAmarelo; let imagemTruckLaranja; let imagemCarroAzul2; let imagemCarroPreto

function preload(){

imagemDaEstrada = loadImage("imagens/estrada.png"); imagemDoAtor = loadImage("imagens/Ciclista.png"); imagemCarroVermelho = loadImage("imagens/carro_vermelho.png"); imagemCarroVerde = loadImage("imagens/carro_verde.png"); imagemCarroAzul = loadImage("imagens/carro_azul.png"); imagemTruckAmarelo = loadImage("imagens/truck_amarelo.png"); imagemTruckLaranja = loadImage("imagens/truck_laranja.png"); imagemCarroPreto = loadImage("imagens/carro_preto.png"); imagemCarros =[imagemCarroVermelho, imagemCarroVerde, imagemCarroAzul, imagemTruckAmarelo, imagemTruckLaranja, imagemCarroAzul, imagemCarroPreto];

}

//ator let xAtor = 220; let yAtor = 370; let colisao = false;

function mostraAtor(){ image(imagemDoAtor, xAtor, yAtor, 40, 40); }

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

function verificaColisao(){ //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter) for (let i = 0; i < imagemCarros.length; i++){ colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15) if (colisao){ voltaAtorParaPosicaoInicial(); } } }

function voltaAtorParaPosicaoInicial(){ yAtor = 366; } function verificaColisao(){ //collideRectCircle(x1, y1, width1, height1, cx, cy, diameter) for (let i = 0; i < imagemCarros.length; i++){ colisao = collideRectCircle(xCarros[i], yCarros[i], comprimentoCarro, alturaCarro, xAtor, yAtor, 15) if (colisao){ voltaAtorParaPosicaoInicial(); } } }

function colidiu(){ yAtor = 366; }

//Array list let xCarros = [600,600,600,600,600,600,600]; let yCarros = [220,320,265,120,20,165,80]; let velocidadeCarros = [2.5, 1.5, 3, 2, 2.7, 2.2,0.9]; let comprimentoCarro = 80; let alturaCarro = 70;

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

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

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

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

1 resposta

Olá, Yuki! Tudo bem?

Vou pedir para mandar o link editor do seu projeto para que possamos verificar onde está acontecendo o problema.

Estamos no aguardo!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software