2011-07-03 7 views
1

私はキャラクターを衝突のあるタイルマップの周りで動かそうとしています。 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は1つのアプローチを示していますが、これはより巧みなものですが、exampleは、関連するグリッドベースのゲームをモデル化しています。