2011-07-03 60 views
1

我試圖讓我的角色在衝突的瓦片地圖上移動。除了一件事以外,一切正常。我告訴你一個問題的圖片:基於圖塊的地圖和碰撞;卡住

http://i.imgur.com/bcyz5.jpg 也就是說,當我達到上面的瓷磚,我不能移動任何地方。如果你從左邊來,我無法上下移動。如果你達到最低點,我可以移動到左邊,但不是右邊。當你到達右邊時,我可以向任何方向移動。

老實說,我不知道什麼可能會失敗。我認爲它必須做,如果(...),因爲如果我更改順序,在那裏我可以移動改變地址:/

這裏,我離開了一些代碼:

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建模相關的網格遊戲。