2016-10-27 14 views
0

나는 학교 프로젝트를위한 탈주 게임을 만들고있다. 내가 겪고있는 유일한 문제는 볼과 벽돌이 충돌 할 때 볼이 튀는 것입니다. 나는 ball1.getEllipse(). intersects (b.getRectangle())를 사용하여 충돌 시점을 파악하고 벽돌을 삭제할 수있게했습니다. 충돌 한 측면에 따라 튀는 기회. 이것은 주요 문제입니다. 그 반점 조각은 벽돌이 어느 쪽을 치는지 보여주지 않습니다. x 또는 y 속도를 변경할지 여부를 알기 위해이 항목이 필요합니다. 사람이 밖으로을 파악하는 방법에 대한 아이디어가 있다면, 귀하의 의견을 남겨주세요 당신에게, 당신의 질문에서 이해하는 바로는. 사각 지대와 원형 충돌 자바를 사용하여.

public void collision(int i) { 

    for (Block b : blocks) { 
     if (ball1.getEllipse().intersects(b.getRectangle())) { 
      if (!b.isDestroyed()) { 
       b.destroy(); 
       blockCount-=1; 
       ball1.brickBounce();`public void collision(int i) { 

답변

1

(나는 5 시간 동안 솔루션의 생각하려고 한, 나는 포기) 볼이 타격을 가하는 직사각형의 어느 쪽인지 알고 싶습니다. 이렇게하는 간단한 방법은 공의 위치와 직사각형의 위치를 ​​취하여 두 개를 비교하는 것입니다. 공의 x 위치가 사각형 x 위치보다 작 으면 - 너비의 절반 (공백의 x 위치를 얻기 위해), 공이 왼쪽에 부딪칩니다. 그런 다음 오른쪽의 반대를 할 수 있습니다. 상단 또는 하단에 맞았는지 확인하는 것은 y 위치 및 사각형의 높이와 비슷합니다. 각 모양의 x 및 y 위치가 가운데라고 가정 할 때, 중심 인 것처럼 동일한 결과를 얻으려면 약간의 조정 만 수행하면 안된다는 점에 유의하십시오.