我需要帮助,或至少需要在我为了乐趣制作的游戏中得到指引与碰撞问题

所以我做了一个游戏,做了一个地图,一切都很正常。问题是我制作了一个非常愚蠢的碰撞系统,一开始是可以运作的,但我遇到了问题。

我使用玩家的X和Y位置来绘制角色,并使用玩家的tileX和tileY(x/32和y/32)来检测碰撞。这里有一张图片来解释我的问题: 问题

红色方框代表玩家的tileX和tileY坐标。玩家仍然会穿墙而过,虽然应该碰撞了。

TileX不会让增加/减少发生,如果它们与固体砖块碰撞,但是玩家的X和Y(sprite)仍然超出了那个框31个像素。我不知道该怎么办。我的玩家图像不居中,它是在右上角绘制的。

这是我目前正在使用的代码:

    for i=1, #lsx_map1 do
        if math.floor(player.fx/32) == lsx_map1[i] and math.floor(player.fy/32) == lsy_map1[i] then
            player.speedx = 0
            player.speedy = 0
            print("在"..player.x.." "..player.y.."上检测到碰撞")
        else
            print(colVar)
            colVar = colVar+1
        end
    end
    if colVar == #lsx_map1 then
        player.x = player.fx
        player.y = player.fy
    end

lsx_map1是固体砖块的数量,如果没有发生碰撞,colVar应该等于该数字。如果发生碰撞,则该数字不会增加,并且什么都不会发生。如果您要帮助我,但需要更多信息,请随时询问您需要的任何细节。

我会感激任何帮助或建议。谢谢。

点赞