Dans ce cas, une autre solution consiste à ajouter une variable pour stocker la position du clic de souris lorsque l'utilisateur tire. Ainsi, lorsque la balle est tirée, elle continuera à se déplacer dans la direction correspondante plutôt que de suivre le curseur.
Voici un exemple de code modifié qui montre comment vous pouvez utiliser la position du clic de souris pour contrôler la trajectoire de la balle :
```
// Déclaration de la variable pour stocker la position du clic de souris
var mousePos = { x: 0, y: 0 };
// Écouteur d'événements pour capturer la position du clic de souris
canvas.addEventListener('mousedown', function (evt) {
mousePos = getMousePos(canvas, evt);
shotLightVisible = true;
}, false);
function draw() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.fillStyle = "black";
ctx.fillRect(0, 0, canvas.width, canvas.height);
ctx.save();
ctx.translate(player.x, player.y);
ctx.rotate(angle + Math.PI / 2);
ctx.drawImage(player.image, -player.width / 2, -player.height + 45 / 2, player.width, player.height);
if (shotLightVisible) {
ctx.drawImage(player.shotLightImage, (-player.width) + 65 / 2, (-player.height / 2) - 42, 20, 20);
dir = angle + Math.PI / 2;
bulletPos = 0;
bullet = true;
shotLightVisible = false;
}
if (bullet) {
ctx.drawImage(player.bulletImg, (-player.width) + 85 / 2, (-player.height / 2) - 42 + bulletPos, 2, 34);
bulletPos -= 10;
if (bulletPos == -1000) {
bullet = false;
} else {
// Calcul de la trajectoire de la balle à partir de la position du clic de souris
var dx = mousePos.x - player.x;
var dy = mousePos.y - player.y;
var dist = Math.sqrt(dx * dx + dy * dy);
dx /= dist;
dy /= dist;
player.x += dx * 10;
player.y += dy * 10;
}
}
ctx.restore();
}
// Fonction pour obtenir la position de la souris dans le canvas
function getMousePos(canvas, evt) {
var rect = canvas.getBoundingClientRect();
return {
x: evt.clientX - rect.left,
y: evt.clientY - rect.top
};
}
```
J'espère que cela vous aidera à résoudre le problème de suivi de la balle après le tir.