Consegui criar a raquete do oponente e verificar a colisão, porém, não consigo movimentar a raquete do oponente usando como referência o eixo y da bolinha... Alguém consegue me ajudar?
Consegui criar a raquete do oponente e verificar a colisão, porém, não consigo movimentar a raquete do oponente usando como referência o eixo y da bolinha... Alguém consegue me ajudar?
Oi Vinicius, Tudo bem? poderia compartilhar seu código? para ver se consigo te ajudar?
O código a movimentação do oponente é o seguinte:
function movimentaRaqueteOponente(){
velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento / 2 - 30;
yRaqueteOponente += velocidadeYOponente
}
Primeiro você cria a função para o movimento movimentaRaqueteOponente()
function movimentaRaqueteOponente(){
}
em seguida precisamos criar a variável que vai receber a velocidade em que a raquete do oponente ira se movimentar -> velocidadeYOponente =
e nela colocaremos o yBolinha e descontar o yRaquete e descontar o comprimento dividido por 2, para que o ponto de onde a bolinha bata seja no centro da raquete.
velocidadeYOponente = yBolinha -yRaqueteOponente - raqueteComprimento / 2 - 30;
e por final vamos colocar a velocidade que acabamos de criar, para o y da raquete, igual fizemos para movimentar a bolinha
yRaqueteOponente += velocidadeYOponente
Olá Leonardo, tudo bem e com você?
Muito obrigado pela ajuda!
Aqui está meu código:
//Variáveis da bolinha let xBolinha = 300; let yBolinha = 200; let diametro = 15; let raio = diametro / 2;
//Velocidade da bolinha let velocidadeXBolinha = 6; let velocidadeYBolinha = 6;
//Variáveis da raquete let xRaquete = 5; let yRaquete = 150; let RaqueteComprimento = 8; let RaqueteAltura = 90;
//Variáveis segunda raquete let xRaquete2 = 585; let yRaquete2 = 150; let RaqueteComprimento2 = 8; let RaqueteAltura2 = 90; let colidiu = false;
//desenha a tela function setup() { createCanvas(600, 400); }
//principal function draw() { background(0); DesenhaBolinha(); VelocidadeBolinha(); VerificaColisao(); MostraRaquete(); MostraRaquete2(); MovimentaRaquete(); MovimentaRaquete2(); ColisaoRaquete(); ColisaoRaquete2();
}
function DesenhaBolinha(){ circle(xBolinha, yBolinha, diametro); }
function VelocidadeBolinha(){ xBolinha += velocidadeXBolinha; yBolinha += velocidadeYBolinha;
}
function VerificaColisao(){ if(xBolinha + raio > width || xBolinha - raio < 0){ velocidadeXBolinha *= -1; }
if(yBolinha + raio > height || yBolinha -raio < 0){ velocidadeYBolinha *= -1;
} }
function MostraRaquete(){ rect(xRaquete, yRaquete, RaqueteComprimento, RaqueteAltura);
}
function MostraRaquete2(){ rect(xRaquete2, yRaquete2, RaqueteComprimento2, RaqueteAltura2); }
function MovimentaRaquete(){ if(keyIsDown(UP_ARROW)){ yRaquete -= 10; }
if(keyIsDown(DOWN_ARROW)){ yRaquete += 10; } }
function MovimentaRaquete2(){
} function ColisaoRaquete(){ if(xBolinha - raio < xRaquete + RaqueteComprimento && yBolinha - raio < yRaquete + RaqueteAltura && yBolinha + raio > yBolinha){ velocidadeXBolinha *= -1; } }
function ColisaoRaquete2(){ colidiu = collideRectCircle(xRaquete2, yRaquete2, RaqueteComprimento2, RaqueteAltura2, xBolinha, yBolinha, diametro); if(colidiu){ velocidadeXBolinha *= -1; } }
Obrigado por mandar o código Vinicius .
Aqui esta ele completo, já com a movimentação da segunda raquete como te expliquei lá em cima.
fico feliz em ter ajudado
//Variáveis da bolinha
let xBolinha = 300;
let yBolinha = 200;
let diametro = 15;
let raio = diametro / 2;
//Velocidade da bolinha
let velocidadeXBolinha = 6;
let velocidadeYBolinha = 6;
//Variáveis da raquete
let xRaquete = 5;
let yRaquete = 150;
let RaqueteComprimento = 8;
let RaqueteAltura = 90;
//Variáveis segunda raquete
let xRaquete2 = 585;
let yRaquete2 = 150;
let RaqueteComprimento2 = 8;
let RaqueteAltura2 = 90;
let colidiu = false;
//desenha a tela
function setup() {
createCanvas(600, 400);
}
function draw() {
background(0);
DesenhaBolinha();
VelocidadeBolinha();
VerificaColisao();
MostraRaquete();
MostraRaquete2();
MovimentaRaquete();
MovimentaRaquete2();
}
function DesenhaBolinha() {
circle(xBolinha, yBolinha, diametro);
}
function VelocidadeBolinha() {
xBolinha += velocidadeXBolinha;
yBolinha += velocidadeYBolinha;
}
function VerificaColisao() {
if (xBolinha + raio > width || xBolinha - raio < 0) {
velocidadeXBolinha *= -1;
}
if (yBolinha + raio > height || yBolinha - raio < 0) {
velocidadeYBolinha *= -1;
}
}
function MostraRaquete() {
rect(xRaquete, yRaquete, RaqueteComprimento, RaqueteAltura);
}
function MostraRaquete2() {
rect(xRaquete2, yRaquete2, RaqueteComprimento2, RaqueteAltura2);
}
function MovimentaRaquete() {
if (keyIsDown(UP_ARROW)) {
yRaquete -= 10;
}
if (keyIsDown(DOWN_ARROW)) {
yRaquete += 10;
}
}
function MovimentaRaquete2() {
velocidadeYOponente = yBolinha -yRaquete2 - RaqueteComprimento2 / 2 - 30;
yRaquete2 += velocidadeYOponente
}
function ColisaoRaquete() {
if (
xBolinha - raio < xRaquete + RaqueteComprimento &&
yBolinha - raio < yRaquete + RaqueteAltura &&
yBolinha + raio > yBolinha
) {
velocidadeXBolinha *= -1;
}
}
function ColisaoRaquete2() {
colidiu = collideRectCircle(
xRaquete2,
yRaquete2,
RaqueteComprimento2,
RaqueteAltura2,
xBolinha,
yBolinha,
diametro
);
if (colidiu) {
velocidadeXBolinha *= -1;
}
}
Valeu Leonardo, ficou ótimo!
Muito obrigado pela ajuda, abraço!