如何在JavaScript中检测复杂对象的冲突

如何在JavaScript中检测复杂对象的冲突,javascript,collision-detection,game-development,Javascript,Collision Detection,Game Development,我应该如何检测不能有矩形碰撞盒的精灵的碰撞?我正在尝试制作一个平台成型器,目前我正在为该平台的平台进行碰撞检测。这是我的物理: function onTimerTick() { if (moveY > 300) { momentumY = momentumY - 2; move(moveX, moveY); } else if (moveY < 300) { moveY = 300; momentumY = 0; move(moveX,

我应该如何检测不能有矩形碰撞盒的精灵的碰撞?我正在尝试制作一个平台成型器,目前我正在为该平台的平台进行碰撞检测。这是我的物理:

function onTimerTick() {
  if (moveY > 300) {
    momentumY = momentumY - 2;
    move(moveX, moveY);
  } else if (moveY < 300) {
    moveY = 300;
    momentumY = 0;
    move(moveX, moveY);
  }
  moveY = moveY + momentumY;
  move(moveX, moveY);
  if (moveY <= 300) {
    if (momentumX > 0) {
      right = true;
      momentumX -= 1;

    } else if (momentumX < 0) {
      if (document.getElementById("spriteNotReal").getAttribute("scr") != "walkLeft.gif") {
        document.getElementById("spriteNotReal").src = "walkLeft.gif";
      }
      right = false;
      momentumX += 1;

    } else {
      if (right == true) {
        document.getElementById("spriteNotReal").src = "amaincharacter.png";
      } else {
        document.getElementById("spriteNotReal").src = "maincharacterleft.png";
      }
    }
    moveX = moveX + momentumX;
  } else {
    moveX += momentumX / 3 + 1;
    document.getElementById("spriteNotReal").src = "jumpmain.gif";
  }
  document.getElementById("gold").innerHTML = momentumX;
}
函数onTimerTick(){
如果(移动>300){
momentumY=momentumY-2;
移动(moveX,moveY);
}否则如果(移动小于300){
moveY=300;
动量y=0;
移动(moveX,moveY);
}
moveY=moveY+动量;
移动(moveX,moveY);
如果(移动0){
右=真;
动量x-=1;
}否则如果(动量x<0){
if(document.getElementById(“spritentreal”).getAttribute(“scr”)!=“walkleet.gif”){
document.getElementById(“spritentreal”).src=“walkLeft.gif”;
}
右=假;
动量x+=1;
}否则{
if(right==true){
document.getElementById(“spritentreal”).src=“amaincharacter.png”;
}否则{
document.getElementById(“spritentreal”).src=“maincharacterleft.png”;
}
}
moveX=moveX+动量x;
}否则{
moveX+=动量x/3+1;
document.getElementById(“spritentreal”).src=“jumpmain.gif”;
}
document.getElementById(“gold”).innerHTML=momentumX;
}

我想尝试将关卡分解成不同的矩形,都在同一个类中,然后测试该类中的碰撞。我有什么办法可以这样做吗?此外,我认为我应该使用boundingClientRect,但我不知道如何将其用于碰撞。

我添加了一个想法,但我不知道如何实际实现它。