Я создаю простую игру на javascript, в которой весло должно ловить дождевые блоки. При столкновении оценка должна увеличиться на 1, но в моем случае оценка увеличивается на 12.
Я совершенно уверен, что обнаружение столкновений происходит, потому что блок исчезает, когда он касается весла, и у меня есть console.log, чтобы показать мне, что произошло столкновение.
Мой код обнаружения столкновения
var spawnRate = 1500;
var spawnRateOfDescent = 2;
var lastSpawn = -10;
var objects = [];
var startTime = Date.now();
var score =0;
function spawnRandomObject() {
var t;
if (Math.random() < 0.50)
{
t = "red";
}
else
{
t = "blue";
}
var object = {
type: t,
x: Math.random() * (canvas.width - 30) + 15,
y: 100,
r: 8,
status: 1
}
objects.push(object);
}
function animate()
{
var time = Date.now();
if (time > (lastSpawn + spawnRate)) {
lastSpawn = time;
spawnRandomObject();
}
var paddleLeft=paddleX;
var paddleRight=paddleX+paddleWidth;
var paddleTop=paddleY;
var paddleBottom=paddleY+paddleHeight;
for (var i = 0; i < objects.length; i++)
{
var object = objects[i];
object.y += spawnRateOfDescent;
if (object.status == 1){ //only draw the ball if the status is 1
ctx.beginPath();
ctx.arc(object.x, object.y, object.r, 0, Math.PI * 2);
ctx.closePath();
ctx.fillStyle = object.type;
ctx.fill();
}
var objectTop=object.y-object.r;
var objectBottom=object.y+object.r;
var objectLeft=object.x-object.r;
var objectRight=object.x+object.r;
if (objectRight>paddleX && objectLeft<paddleX+paddleWidth && objectBottom>paddleY && objectTop<paddleY+paddleHeight)
{
object.status = 0;
console.log("collision");
score = score +1;
}
}
}