有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

简单java游戏的碰撞检测

我正在做一个简单的钓鱼游戏,但在碰撞检测方面有困难。我有4个类(渔夫、鱼、鱼钩、鲨鱼),需要检测渔夫和鲨鱼之间以及鱼和鱼钩之间的碰撞

两次碰撞都不起作用,但我现在只发布鲨鱼/渔夫的碰撞。当我说“不工作”时,它们不会在处理过程中产生任何错误,所有其他动作都可以正常工作(当对象到达屏幕顶部时重置高度),但它不会检测到碰撞,也不会按预期停止游戏

//shark类中的布尔值与渔夫(player1)冲突时返回true

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;
  }
} 

//然后我在我的主类的void draw方法下使用了这个if语句

//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);
  }

共 (0) 个答案