충돌 감지 기능을 제대로 작동 시키려고하지만 충돌 할 때 충돌 영역이 계속 움직입니다. 아무리 노력해도. 두 개의 물체가 있고 물체가 움직이며 적/물체를 따라갈 수있는 충돌 영역을 얻을 수 없습니다.움직이고 회전하는 물체 (직사각형 적)에 대한 LibGDX 충돌 감지
나는 아래의 방법을 사용하여 충돌이 작동하고 적을 적절히 따르지 않는지 확인하고 있습니다.
enemy class extends sprite {
위의 예는 스프라이트 확장자를 사용하는 예입니다.
object/enemy가 libgdx의 스프라이트 인 경우 클래스는 스프라이트로 확장됩니다.
shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.setColor(Color.RED);
shapeRenderer.rect(rect1.getX() + (rect1.getWidth()/2), rect1.getY() + (rect1.getHeight()/2) - 2, rect1.getOriginX() - 1, rect1.getOriginY() - 4, 1.0f, 1.0f, rect1.getRotation());
shapeRenderer.rect(rect2.getX() - 10, rect2.getY() - 10, rect2.getWidth() - 10, rect2.getHeight() - 10, rect2.getOriginX(), rect2.getOriginY(), rect2.getRotation());
shapeRenderer.end();
이 적 수준의 충돌 체크
rect.set(getX() + (getWidth()/2), getY() + (getHeight()/2) - 2, getOriginX() - 1, getOriginY() - 4);
이 적을
public boolean collides(Ball ball) {
if (getX() < ball.getX()) {
return (Intersector.overlaps(ball.getRect1(), rect));
}
return false;
충돌하는 경우
어떤 도움이 정말 좋은 것} 보는 것입니다이다. 감사합니다.
코드를 편집했습니다. –
안녕하세요 johnny-b. 두 직사각형이 겹치면 맞을 경우 Intersector는 true를 반환합니다. 당신이 맞지 않으면 사각형이 정확한지 확인하십시오. 당신은 ShapeRenderer ball.getRect1()과 rect를 사용하여 렌더링 할 수 있으며 사각형이 정확한지 확인하십시오. 나는 당신이 직사각형을 상쇄하고 있음을 볼 수 있습니다. 그러나 이것은 당신이 당신의 게임 논리에서 달성하고자하는 것에 달려 있습니다. – z3n105
글 머리 기호는 둥근 모양의 총알 모양과 비슷합니다. 그래서 사각형 내부를 충돌 감지 영역으로 만들고 전체 사각형을 덮으려는 전체 스프라이트가 아닙니다. 이것은 영역이 충분히 커버하므로 총알이 덮여 있고 그것을 죽일 touch() 메소드를 구현하려고합니다. 그래서 사각형 영역을 터치하면 꺼내집니다. 그게 더 명확하면 ?? –