C ++ SFML Обнаружение столкновений иногда не удается - PullRequest
0 голосов
/ 22 июня 2019

Я делаю игру в понг, используя c ++ с SFML.В большинстве случаев обнаружение столкновений работает хорошо;однако, иногда это терпит неудачу прямо, не давая сообщения об ошибках.Это делает это, по-видимому, непредсказуемо, так что это не только одно обстоятельство, которое вызывает это, поэтому я не знаю, в чем проблема.Вот код для обнаружения столкновения:

bool circleRectCollisionDetection(int CircleX,int CircleY,int CircleRadius,int RectX,int RectY,int RectWidth,int RectHeight){
  int DeltaX = CircleX - max(RectX, min(CircleX, RectX + RectWidth));
  int DeltaY = CircleY - max(RectY, min(CircleY, RectY + RectHeight));
  return (DeltaX * DeltaX + DeltaY * DeltaY) < (CircleRadius * CircleRadius);
}

А вот как он называется:

  int ballx = ball->getX();
  int bally = ball->getY();
  int rotation = ball->getRotation();
  int player1x = player1->getX();
  int player2x = player2->getX();
  int player1y = player1->getY();
  int player2y = player2->getY();


  //left Paddle
  if(circleRectCollisionDetection(ballx,bally,30,player1x,player1y,30,150)){
    cout<<"1"<<endl;
    ball->setX(player1x+80);
    ball->invertXFunc();

  }

  //right paddle
  if(circleRectCollisionDetection(ballx,bally,30,player2x,player2y,30,150)){
    cout<<"2"<<endl;

    ball->setX(player2x-80);
    ball->invertXFunc();
  }
...