2014-01-30 3 views
1

코드 최적화를 위해 40 등 사각형 (10x10px)을 포함하는 2 차원 배열을 만들고 싶습니다. 각 사각형은 표시된 창 (400x400 픽셀)의 1 \ 40을 나타냅니다.2 차원 배열 사각형 초기화 및 선택

2d 배열을 표준 이중 for 루프 방법으로 채 웁니다.

int col = 40; 
    int row = 40; 
    int boxPosition = 0; //Position of the box (coordinates) 
    Integer[][] boxes = new Integer[40][40]; 

    for (int i = 0; i < col; i++) { 
     for (int j = 0; j < row; j++) { 
      boxes[i][j] = boxPosition; 
      boxPosition += 10; //Creates a 10px box. 
     } 
     boxPosition = 0; //Resets box size for next column 
    } 

이 프로그램에 여러 개의 원을을 수 있습니다. 우리는 적 (원)쪽으로 미사일 (원)을 발사하는 우주선 (원)을 가지고 있습니다.

사각형 중 하나에 총알 + 적이있을 때만 충돌 감지를 실행하고 싶습니다. 이렇게하면 코드를 크게 최적화 할 수 있습니다.

질문은 ... 2 차원 배열에서이 사각형을 어떻게 만들 수 있습니까? 각 사각형을 어떻게 선택합니까? 미사일과 적들이 같은 광장 안에 있는지 어떻게 테스트 할 수 있습니까?

코드 예제는 대단히 적절합니다.

감사합니다.

+0

boxSize는 무엇을 의미합니까? 그것이 "박스"의 크기라면, 그것들은 모두 동일하지 않습니다. 그것이 위치적인 것이라면, 그것이 의미하는 바를 분명히해야합니다. – JLewkovich

+0

좋은 지적. 예, 위치입니다. 방금 고쳤습니다. – Gregg1989

+0

좌표를 하나의 값으로 저장하는 것은 실제로 그렇게 작동하지 않습니다. 2D 그리드를 사용하는 경우 최소한 두 개의 좌표 값이 필요합니다. – JLewkovich

답변

2

2D 배열을 사용하여 수행중인 작업이나 정수가 포함 된 이유 또는 각 열에 크기가 증가하는 이유가 확실하지 않지만 그리드 기반 충돌을 수행하는 일반적인 방법은 2D 배열 GameObjects의. 귀하의 경우 GameObject는 선박, 미사일 또는적일 수 있습니다.

GameObject 중 하나가 움직이기를 원할 때 게임 객체의 2D 배열을 확인하여 이동하려는 사각형에 이미있는 것을 확인하기 만하면됩니다. 비어있는 경우 이동을 수행 할 수 있습니다. 비어 있지 않으면 충돌이 발생했습니다.

+0

의미가 있습니다. 의사 코드를 제공해 주시겠습니까? 정말로, 정말 많이 도와 줄 것입니다. – Gregg1989

+0

특정 문제가있을 때 뭔가를 시도하고 질문을 게시하는 것은 어떻습니까? 의사 코드는 내 마지막 단락과 크게 다르지 않습니다. –

+0

나는 네가 나에게 부탁 한대로 정확하게했다. 내 새 스레드 http://gamedev.stackexchange.com/questions/69686/grid-based-collision-detection-between-circles?noredirect=1#comment125529_69686을 확인하십시오. – Gregg1989