2015-01-09 6 views
-1

시작하기 전에 this 게시물을 읽었지만 제대로 작동하지 않는 것 같습니다. Arc2d 개체와 Ellipse2D 개체 사이의 충돌을 확인하려고합니다. 충돌은 작동하지만 객체를 사각형으로 바꿉니다. "A"는 "E"와 충돌 그래서 부울 반환 값을 확인 할 무언가의 위치를 ​​변경 내 타이머에서Ellipse2D 객체와 Arc2d 객체 간의 충돌 감지

public Arc2D a; 
public Ellipse2D e; 

public void aStuff() { 
    a = new Arc2D.Double(((getWidth()/2) - (250/2)), (getHeight() - 135), 250, 265, 0, 180, Arc2D.CHORD); 
} 

public void eStuff() { 
    e = new Ellipse2D.Double((getWidth()/2), y, 52, 55); 
} 

public boolean collisionCheck() { 
    if (a.getBounds2D().intersects(e.getBounds2d())) { // This is where it turns them into rectangles. 
     return true; 
    } else { 
     return false; 
    } 
} 

.

y += 5; 
if (collisionCheck()) { 
    ... 
} 

그러나 현재로서는 점검 부분이 제대로 작동하지 않습니다. 무엇을 변경할 수 있습니까? 셰이프 개체를 사용하여 영역을 사용하여 시도했지만 그것은 부울 값을 반환 할 수 없다는 오류가 발생합니다. 어떤 도움을 주셔서 감사합니다.

답변

0

Shape 자체를 사용하는 것보다 Area이 모양 충돌을 수행하는 데 훨씬 유용하다는 것을 알았고 Arcs를 영역 here으로 구축하기위한 유틸리티를 구축했습니다. 관심이 있으시면 Area을 살펴 보시기 바랍니다.

두 번째 질문에 대해서는 collisionCheck 메서드에서 else {...} 블록을 제거하고 if {} 블록 바로 다음에 false를 반환하면 문제가 해결 될 수 있습니다.

+0

영역을 사용하여 시도했지만이 오류가 발생합니다. 형식이 일치하지 않습니다 : void에서 boolean으로 변환 할 수 없습니다. – Thomas