Обнаружение столкновений для простой Java-игры - PullRequest
0 голосов
/ 29 апреля 2018

Я делаю простую рыбалку, но у меня возникают проблемы с обнаружением столкновений. У меня есть 4 класса (рыбак, рыба, крючок, акула), и мне нужно обнаружить столкновения между рыбаком и акулой и между рыбой и крючком.

Ни одно из столкновений не работает, но я пока просто отправлю сообщение об акуле / рыбаке. Когда я говорю, что не работает, они не выдают никаких ошибок при обработке, и все другие действия работают нормально (сброс высоты, когда объект достиг верхней части экрана), но это не обнаруживает столкновения и не останавливает игру, как предполагалось .

// Логическое значение в классе акул возвращает true, когда оно сталкивается с Рыбаком (player1)

boolean sharkHitBoat(Fisherman player1)
{
  int player1Left = player1.x;
  int player1Right = player1.x + 80;
  int player1Top = player1.y;
  int player1Bottom = player1.y + 20;

  int shark1Left = shark1.x;
  int shark1Right = shark1.x+shark1.w;
  int shark1Top = shark1.y;

  if (shark1Top + shark1.dy >= player1Bottom && shark1Right >= player1Left && shark1Left <= player1Right && shark1Top <= player1Top)
  {
    return true;
  }
  else {
    return false;
  }
} 

// Затем я использовал это выражение if в своем основном классе в методе void draw

//if shark reaches top then reset, if shark hits boat then game over
    if (shark1.sharkHitBoat(player1) == false && shark1.sharkReachTop() == false)
    {
      shark1.y=1000;
    }
    else if (shark1.sharkHitBoat(player1) == true)
    {
      gameMode = GAMEOVER;
      textSize(60);
      fill(255,30,0);
      text("YOU LOSE", 270, 200);
      textSize(30);
      fill(255,255,255);
      text("PRESS SPACE TO PLAY AGAIN", 200, 230);
    }

// sharkReachTop логическое

boolean sharkReachTop()
  {
    y=y-dy;
    return (y>=110);
  }
...