2011-07-03 5 views
1

나는 충돌로 타일 맵을 움직이게하려고합니다. 한 가지는 제외하고 모든 것이 잘 작동합니다. 문제가있는 사진을 보여 드리겠습니다.타일 기반지도 및 충돌; 붙어 다니기

즉, 위의 타일에 도달하면 아무데도 이동할 수 없습니다. 왼쪽에서 오는 경우 위아래로 움직일 수 없습니다. 바닥에 도달하면 왼쪽으로 움직일 수 있지만 오른쪽으로는 움직일 수 없습니다. 그리고 당신이 오른쪽에 도달하면 어떤 방향 으로든 이동할 수 있습니다.

솔직히 나는 무엇이 실패할지 모릅니다.

boolean collision = false; 

if(Keyboard.isKeyDown(Keyboard.KEY_UP)) { 
    for(int i = 0; i < map.GetNumLayers(); i++) { 
     if(UpTile(map, i) > 128) { 
      collision = true; 
     } 
    } 

    if(!collision) AddPos(0.0f, -vel); 
} 
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)) { 
    for(int i = 0; i < map.GetNumLayers(); i++) { 
     if(LeftTile(map, i) > 128) { 
      collision = true; 
     } 
    } 

    if(!collision) AddPos(-vel, 0.0f); 
} 
if(Keyboard.isKeyDown(Keyboard.KEY_DOWN)) { 
    for(int i = 0; i < map.GetNumLayers(); i++) { 
     if(DownTile(map, i) > 128) { 
      collision = true; 
     } 
    } 

    if(!collision) AddPos(0.0f, vel); 
} 
if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) { 
    for(int i = 0; i < map.GetNumLayers(); i++) { 
     if(RightTile(map, i) > 128) { 
      collision = true; 
     } 
    } 

    if(!collision) AddPos(vel, 0.0f); 
} 

답변

1

것은이 될 것입니다 : 여기에/

나는 몇 가지 코드를 남겨 : 나는 순서를 변경하는 경우 때문에, 나는 변화를 이동할 수있는 주소는 (...) 만약 함께 할 수 있다고 생각 위에서 보여준 것과 게임의 모델을 분리하는 것이 더 쉽습니다. 이 example은 하나의 접근법을 보여 주지만 더 정교한 example은 관련 그리드 기반 게임을 모델링합니다.