Javascript столкновение 2D-игра между 2 изображениями не работает - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь понять обнаружение столкновений в 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; 
  }
  } ```

...