Я пытаюсь сделать мяч отскоком внутри холста, и он не работает. Мяч застревает у «стен», и я не понимаю, почему. Кто-нибудь знает, как я могу это исправить?Отскок мяча в холсте
var can = document.querySelector("canvas");
var ctx = can.getContext("2d");
var canvasWidth = 500;
var canvasHeight = 400;
var radius = 30;
var pX = 60;
var pY = 50;
function draw() {
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
ctx.beginPath();
ctx.fillStyle = "red";
ctx.arc(pX, pY, radius, 0, Math.PI * 2, false);
ctx.fill();
ctx.closePath();
}
function animate() {
var vX = 3;
var vY = 3;
if (pY >= canvasHeight - radius) {
vY = -vY;
}
if (pX >= canvasWidth - radius) {
vX = -vX;
}
pX += vX;
pY += vY;
draw();
requestAnimationFrame(animate);
}
animate();
О спасибо, я забыл, но я до сих пор получил тот же самый вопрос. Мяч застревает в углах. – OignonDoux
Это происходит потому, что vX и vY являются локальными переменными в функции animate. Просто переместите объявление переменной и присвоение этих двух переменных вне функции. – boxsome
Большое спасибо за вашу помощь! – OignonDoux