2017-01-14 1 views
0

나는 Libgdx에서 직사각형에 대한 충돌 감지를 찾고/만들려고했지만 어디에도 갈 수없는 것처럼 보입니다. 저는 폭과 높이가 64 인 버킷이라고 불리는 사각형과 너비와 높이가 64 인 벽이라는 사각형을 가지고 있습니다. 플레이어가 사각형을 지나치지 않고 벽에 붙지 않고 계속 움직일 수 있도록하기 위해 노력 중입니다. 페이징 또는 랜덤 텔레포트. 내 방법은 1 블록이있을 때 작동하지만 그 이상이있을 때는 그냥 깨지고 작동하지 않습니다.Libgdx 장방형 벽 충돌

나는이 방법이 못생긴 것을 알고 있지만, 누군가가 올바른 방향으로 날 지점 또는 나에게 도움이 될 몇 가지 코드를 공유 할 수 있다면 나는 매우 감사 할 것입니다 단지 실험

private void checkCollisions(Rectangle bucket, Wall wall){ 
    if(bucket.overlaps(wall.getRectangle())){ 
     if(bucket.x > wall.getRectangle().x - 64 && bucket.x < wall.getRectangle().x - 55){ 
      //collision with right side 
      bucket.x = wall.getRectangle().x - 64; 
     } 
     if(bucket.x < wall.getRectangle().x + 64 && bucket.x > wall.getRectangle().x + 55){ 
      //collision with left side 
      bucket.x = wall.getRectangle().y + 64; 
     }       
     if(bucket.y < wall.getRectangle().y + 64 && bucket.y > wall.getRectangle().y + 55){ 
      //collision with top side 
      bucket.y = wall.getRectangle().y + 64; 
     }        
     if(bucket.y > wall.getRectangle().y - 64 && bucket.y < wall.getRectangle().y - 55){ 
      //collision with bottom side 
      bucket.y = wall.getRectangle().y - 64; 
     } 
    } 
} 

입니다.

답변

1

LibGDX 충돌 감지시 가장 먼저 기본 LibGDX 좌표 시스템의 중요한 두 가지 사항을 확인해야합니다.

  • 사용자가 이미지를 그릴 때, 그 (x, y) 좌표는 화상
  • (0,0)의 왼쪽 하단이 사용 화면

하단 좌측이다 정보 우리는 다음과 충돌에 대한 귀하의 논리를 수정할 수 있습니다

private void checkCollisions(Rectangle bucket, Wall wall){ 
    if(bucket.overlaps(wall.getRectangle())){ 
     if(bucket.x + 64 > wall.getRectangle().x && bucket.x < wall.getRectangle().x){ 
      //collision with right side of bucket 
     } 
     if(bucket.x < wall.getRectangle().x + 64 && bucket.x > wall.getRectangle().x){ 
      //collision with left side of bucket 
     }       
     if(bucket.y + 64 > wall.getRectangle().y && bucket.y < wall.getRectangle().y){ 
      //collision with top side of bucket 
     }        
     if(bucket.y < wall.getRectangle().y + 64 && bucket.y > wall.getRectangle().y){ 
      //collision with bottom side of bucket 
     } 
    } 
} 

이 방법을 함께 충돌을 감지되는 버킷의면을 확인한다 기본 LibGDX 좌표계.