我正在努力为朋友做一个简单的pong娱乐活动,我很难检测到球击中球拍的时间,以便让它反弹。下面是我检测碰撞的功能,如果有人可以帮助解决这个问题,那么当球击中球拍时,碰撞功能返回true并且球被重定向,我将非常感激。
function checkWalls(){
// Bounce off right wall
if(ball.getX() + ball.getRadius() > getWidth()){
dx = -dx;
}
// Bounce off left wall
if(ball.getX() - ball.getRadius() < 0){
dx = -dx;
}
// Bounce off bottom wall
if(ball.getY() + ball.getRadius() > getHeight()){
endGame();
}
// Bounce off top wall
if(ball.getY() - ball.getRadius() < 0){
dy = -dy;
}
//detect collision betweeen ball and paddle, return true or false
function collision(ball,paddle){
var distX = Math.abs(ball.x - paddle.x-paddle.w/2);
var distY = Math.abs(ball.y - paddle.y-paddle.h/2);
if (distX > (paddle.w/2 + ball.r)) { return false; }
if (distY > (paddle.h/2 + ball.r)) { return false; }
if (distX <= (paddle.w/2)) { return true; }
if (distY <= (paddle.h/2)) { return true; }
var dx=distX-paddle.w/2;
var dy=distY-paddle.h/2;
return (dx*dx+dy*dy<=(circle.r*circle.r));
}
//Bounce off paddle
if(collision == true){
dy= -dy;
}
}