【问题标题】:Tile based map and collision; getting stuck基于瓦片的地图和碰撞;卡住
【发布时间】:2011-07-03 10:58:22
【问题描述】:

我试图让我的角色在有碰撞的瓷砖地图上移动。除了一件事,一切都很好。我给你看一张有问题的图片:

也就是说,当我到达上方的瓷砖时,我无法移动任何地方。如果你从左边来,我不能上下移动。如果你到达底部,我可以向左移动,但不能向右移动。当你到达右边时,我可以向任何方向移动。

老实说,我不知道什么可能会失败。我认为这与 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);
}

【问题讨论】:

    标签: java collision-detection tile


    【解决方案1】:

    您可以更轻松地将游戏模型与上面显示的视图分开。这个example 展示了一种方法,而这个更精细的example 模拟了一个相关的基于网格的游戏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      相关资源
      最近更新 更多