3
respostas

a bolinha não esta pegando nas bordas de baixo e voltando, esta passando direto

Olá! eu consegui fazer que a bolinha consiga pegar nas bordas do lado e voltar, mas as bordas de baixo não, que no caso seria a ´´height´´, qndo ela desce, ela vai direto, poderiam me ajudar?

let xBolinha= 300 let yBolinha= 180 let diametroBolinha= 23

let VelocidadexBolinha = 6 let VelocidadeyBolinha= 6

let height = 400 let width = 600

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

function draw() { background(0); circle(xBolinha, yBolinha, diametroBolinha); //xBolinha += VelocidadexBolinha; yBolinha += VelocidadeyBolinha;

if (xBolinha > width || xBolinha < 0) VelocidadexBolinha *= -1 }

if (yBolinha > height){ VelocidadeyBolinha *= -1; }

3 respostas

olá , você esqueceu de criar uma função para colisão da bolinha e chama ela na função draw e no código de colisão esta faltando o raio da bolinha.

esse é o código que eu usei para colisão da bolinha com as bordas

function colisaobolinha (){

if (xBolinha + raioBolinha> width || xBolinha - raioBolinha< 0){ xvBolinha *= -1; } if (yBolinha + raioBolinha> height || yBolinha - raioBolinha < 0){ yvBolinha *= -1; } }

mas na aula do professor, ele não faz nenhuma função e nenhum codigo para colisão da bolinha

eu mudei um pouco o código que o professor passou, achei que assim fica um pouco melhor

esse é o meu codigo ate o momento, eu não finalizei ainda por que estou tentando resolver os bug da bolinha. function setup() { createCanvas(600, 400); }

// variaveis bolinha

var xBolinha = 300; var yBolinha = 200; var dBolinha = 20; var raioBolinha = dBolinha / 2;

// velocidade da bolinha

var xvBolinha = 5; var yvBolinha = 5;

// variaveis raquete

var xRaquete = 5; var yRaquete = 200; var xRaquete2 = 585; var yRaquete2 = 200; var vyRaquete2; var alturaRaquete = 50; var larguraRaquete = 8;

// variaveis placar

var pontosRaquete = 0; var pontosRaquete2 = 0;

function draw() { background(0); mostraBolinha(); mostraRaquete(); movimentaçãoBolinha(); moveRaquete(); moveRaquete2(); colisaobolinha (); ColisaoRaquete (); bugBolinha (); colisãoRaqueteBorda (); placar ();

}

function mostraBolinha (){ circle (xBolinha, yBolinha, dBolinha); }

function movimentaçãoBolinha (){ xBolinha += xvBolinha; yBolinha += yvBolinha; }

function colisaobolinha (){

if (xBolinha + raioBolinha> width || xBolinha - raioBolinha< 0){ xvBolinha *= -1; } if (yBolinha + raioBolinha> height || yBolinha - raioBolinha < 0){ yvBolinha *= -1; } }

function mostraRaquete(){ rect (xRaquete, yRaquete, larguraRaquete, alturaRaquete);

rect (xRaquete2, yRaquete2, larguraRaquete, alturaRaquete); }

function moveRaquete(){ if (keyIsDown(UP_ARROW)){ yRaquete -= 8; } if (keyIsDown(DOWN_ARROW)){ yRaquete += 8; } }

function ColisaoRaquete(){ if (xBolinha - raioBolinha < xRaquete + larguraRaquete && yBolinha - raioBolinha < yRaquete + alturaRaquete && yBolinha + raioBolinha > yRaquete){ xvBolinha *= -1; }

if (xBolinha + raioBolinha > xRaquete2 - larguraRaquete && yBolinha + raioBolinha > yRaquete2 - alturaRaquete && yBolinha + raioBolinha > yRaquete2){ xvBolinha *= -1; } }

function moveRaquete2(){ vyRaquete2 = yBolinha - yRaquete2 - larguraRaquete / 2 -30; yRaquete2 += vyRaquete2; }

function placar(){ fill (300); text (pontosRaquete, 200, 20); text ( pontosRaquete2, 400, 20);

if ( xBolinha - raioBolinha < 5){ pontosRaquete += 1};
if ( xBolinha + raioBolinha > 585 ){ pontosRaquete2 += 1}

}

function colisãoRaqueteBorda (){

if ( yRaquete < 0 ){ yRaquete = -1; }

if ( yRaquete + alturaRaquete > 400){ yRaquete = 349;}

if ( yRaquete2 < 0 ) { yRaquete2 = -1;}

if ( yRaquete2 + alturaRaquete > 400){ yRaquete2 = 349;} }