Я пытаюсь понять обнаружение столкновений в 2D-игре, но столкновения всегда обнаруживаются, и я не знаю причины. человек и вирус - два образа. удалив переменные w, w2, h, h2 и поместив числа в if, столкновение прекращается и не работает. Если кто-то много знает о столкновениях и имеет несколько советов, я был бы признателен. Я любитель и ничего не знаю о js.
var man=document.querySelector(".man");
window.addEventListener('keydown', onKeyboardEvent);
var keycode = {
UP: 38,
DOWN: 40
};
var y=0;
var x=10;
//man moving
function onKeyboardEvent() {
switch (event.keyCode) {
case keycode.UP:
y=y-10;
mann.style.top=y+"px";
man.style.left=x+"px";
break;
case keycode.DOWN:
y=y+10;
man.style.top=y+"px";
break;
}
}
//virus
var virus=document.querySelector(".virus");
var id = setInterval(move, 10);
var min=-4;
var max=165;
var y2 = Math.random() * (+max - +min) + +min;
var x2 = 0;
//virus moving
function move() {
x2++;
virus.style.right = x2 + 'px';
if (x2 == 650) {
x2=0
var y2 = Math.random() * (+max - +min) + +min;
console.log(y2)
virus.style.right = x2 + 'px' ;
virus.style.top = y2 + 'px' ;
}
}
//score telller 1 second is 1point
number = 0;
var score = document.getElementById('seconds-counter');
function incrementSeconds() {
number += 1;
score.innerText = "Score " + number ;
}
var cancel = setInterval(incrementSeconds, 1000);
//height and width
var w = "40" + "px" ;
var h = "40" + "px" ;
var w2 = "40" + "px" ;
var h2 = "40" + "px" ;
//collision
if( collision (x,y,w,h,x2,y2,w2,h2)==true){
document.getElementById("go").style.opacity = 1;
document.getElementById("go").style.left = "400" + "px";
console.log("dead")
}
else {
console.log("nothing")
}
function collision(x1,y1,w1,h1,x2,y2,w2,h2){ //detection
if (((x1 + w1 - 1) < x2) ||
((x2 + w2 - 1) < x1) ||
((y1 + h1 - 1) < y2) ||
((y2 + h2 - 1) < y1)){
return false;
}
else {
return true;
}
} ```