簡體   English   中英

基於瓦片的 map 和碰撞; 卡住

[英]Tile based map and collision; getting stuck

我試圖讓我的角色在 map 上移動並發生碰撞。 除了一件事,一切都很好。 我給你看一張有問題的圖片:

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

老實說,我不知道什么可能會失敗。 我認為這與 if (...) 有關,因為如果我更改順序,我可以移動的地址會更改:/

在這里我留下一些代碼:

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);
}

如果您將游戲的 model 從上面顯示的視圖中分離出來,這將更容易。 這個例子展示了一種方法,而這個更精細的例子模擬了一個相關的基於網格的游戲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM