Основная игра в пинг-понг - учет ширины весла, когда мяч отскакивает от него - PullRequest
0 голосов
/ 28 сентября 2018

У меня возникают проблемы с тем, чтобы мяч распознал толщину лопастей (по одному на каждой стороне холста), поэтому в настоящее время, когда мяч попадает на лопасть, он проходит через него (хотя мяч реагирует на присутствиевесло) и отскакивает от края холста, а не от передней части весла.

Переменные весла, константы и размеры весла

var paddle1Y = 250;
var paddle2Y = 250;
const PADDLE_THICKNESS = 10;
const PADDLE_HEIGHT = 100;

    // this is left player paddle
colorRect(0,paddle1Y,PADDLE_THICKNESS,PADDLE_HEIGHT,'red');

// this is right computer paddle
colorRect(canvas.width-PADDLE_THICKNESS,paddle2Y,PADDLE_THICKNESS,PADDLE_HEIGHT,'red');

// next line draws the ball
colorCircle(ballX, ballY, 10, 'white');

canvasContext.fillText(player1Score, 100, 100);
canvasContext.fillText(player2Score, canvas.width-100, 100);
}

Мяч, реагирующий на весла

computerMovement();

ballX = ballX + ballSpeedX;
ballY = ballY + ballSpeedY;

if(ballX < 0 - PADDLE_THICKNESS) {
    if(ballY > paddle1Y &&
        ballY < paddle1Y+PADDLE_HEIGHT) {
        ballSpeedX = -ballSpeedX;

        var deltaY = ballY
                -(paddle1Y+PADDLE_HEIGHT/2);
        ballSpeedY = deltaY * 0.35;
    } else {
        player2Score++; // must be BEFORE ballReset()
        ballReset();
    }
}
if(ballX > canvas.width + PADDLE_THICKNESS) {
    if(ballY > paddle2Y &&
        ballY < paddle2Y+PADDLE_HEIGHT) {
        ballSpeedX = -ballSpeedX;

        var deltaY = ballY
                -(paddle2Y+PADDLE_HEIGHT/2);
        ballSpeedY = deltaY * 0.35;
    } else {
        player1Score++; // must be BEFORE ballReset()
        ballReset();    
    }
}

Так что в основном мне нужно положение X мяча (ballX) чтобы он отскакивал от лопастей с обеих сторон, а не от края холста, прежде чем отскочить назад.Любые идеи, что нужно добавить, чтобы мяч учитывал толщину лопасти?Спасибо.

...