function racketsballcolision (x, y) {
if (xball - rball < xracket1 + widthracket && yball - rball < yracket1 + heightracket && yball + rball > yracket1) {
veloballx *= -1;
}
if (xball > xracket2 - widthracket && yball + rball > yracket2 && yball < yracket2) {
veloballx *= -1;
}
}
Usei o código acima e, quando a bolinha se movimenta somente na direção x, colide tudo certinho. Mas quando eu habilito a movimentação no eixo y ele para de colidir e ignora a raquete adversária... Eu já mudei todo o código da raquete2 e nada funciona, alguém pode me salva? :(
Este é o código completo:
//ball variables
let xball = 300;
let yball = 200;
let dball = 20;
let rball = dball / 2;
//ball speed
let velobally = 6;
let veloballx = 6;
//racket 1 variables
let xracket1 = 5;
let yracket1 = 150; //<-- account of the racket height, subtract the screen height for racket height.
let widthracket = 10;
let heightracket = 100;
//racket 2 variables
let xracket2 = 585; //<-- account of the racket width, subtract the screen width for the racket width.
let yracket2 = 150;
let racket2speed;
//screen width x height
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
showball ();
ballmovement ();
borderballcolision ();
rackets (xracket1, yracket1);
racketsmovement ();
rackets (xracket2, yracket2);
racketsballcolision ();
}
function showball () {
circle (xball, yball, dball);
}
function ballmovement () {
xball += veloballx;
yball += velobally;
}
function borderballcolision () {
//width colision
if (xball + rball > width ||
xball - rball < 0) {
veloballx *= -1;
}
//height colision
if (yball + rball > height ||
yball - rball < 0) {
velobally *= -1;
}
}
function rackets (x, y) {
rect (x, y, widthracket, heightracket)
}
function racketsmovement () {
if (keyIsDown (UP_ARROW)) {
yracket1 -= 10;
}
if (keyIsDown (DOWN_ARROW)) {
yracket1 += 10;
}
racket2speed = yball - yracket2 - widthracket / 2 - 45;
yracket2 += racket2speed;
}
function racketsballcolision (x, y) {
if (xball - rball < xracket1 + widthracket && yball - rball < yracket1 + heightracket && yball + rball > yracket1) {
veloballx *= -1;
}
if (xball > xracket2 - widthracket && yball + rball > yracket2 && yball < yracket2) {
veloballx *= -1;
}
}