나는 LibGdx를 사용하여 게임을 코딩하고 있으며, 플레이어가 충돌 할 수있는 모든 내 벽의 개체가있는 배열을 가지고 있습니다. LibGdx를 사용하지 않는 사람들을 위해, 나는 ArrayList와 동일한 기능을 제공하는 LibGdx의 Array 클래스에 대해 말하고 있지만, 메모리 효율성을 염두에두고 만들어졌습니다. 나는 충돌을 검사 할 때,이 같은 충돌의 배열의 모든 벽을 통해 이동하고 확인하는 데 : Java보다 효율적인 배열 검색
for(Wall w : walls) {
if(w.bounds().contains(player.bounds()) {
// handle collision
}
}
나는 내가 그 벽이 떨어져있는 경우에도 모든 벽을 통과하고 있기 때문에이 비효율적 실현 현재지도보기. 분명히 현재 카메라의 뷰포트에있는 벽과의 충돌을 확인하는 중이라면 (즉, 플레이어가 현재 볼 수 있음을 의미합니다) 플레이어가 충돌 할 때까지 플레이어가 충돌 할 수 없으므로 전체 배열을 지나는 데 아무런 포인트가 없습니다. 전망. 플레이어와 가까운 벽과의 충돌 만 확인하여 게임을 좀 더 효율적으로 만들려고했습니다. 내 게임에서는 모든 벽이 32x32 픽셀의 셀로 구성된 그리드 위에 고정되었습니다. 나는 충돌에 대한보다 효율적인 검색을 어떻게 만들 수 있는지 정말로 모른다. 해당 키에 vector2 위치를 사용하는 일종의지도처럼 사용할 수 있고지도의 플레이어 위치에서 특정 범위 내의 벽을 통해 플레이어의 위치를 살펴볼 수 있습니까? 플레이어가 현재 어디에 있는지 만날 수있는 현재 벽이 10 개 밖에없는 경우 내 게임에서 100 개 이상의 벽을 모두 통과하지 못하는 코드를 보유하는 방법에 대해 정말 실종 상태입니다. 이게 말이 되니? 누군가 이런 식으로 할 수있는 좋은 방법을 설명 할 수 있을까요? 정말 고마워.
좋은 접근 방법 인 것 같지만 데이터 구조의 일종을 사용하고 싶습니다. 감사. –