我在拼贴方法中遇到问题。出于某种原因,玩家无法通过一些牌。此外,我不完全确定为什么,但是当它被卡住时,它可以向左移动通过物体,但只留下。我在下面发布了一些代码,如果有人能指出我正确的方向,那就太好了。 (如果有人能找到快速解决方案,甚至会更好!)我的播放器移动方法和tile碰撞方法都在更新方法中调用。
map = { {1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{2,2,1,1,1,3,3,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
{1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
}
function testTile(x,y)
if map[y][x + 1] == 1 then
canRight = true
end
if map[y][x + 1] ~= 1 then
canRight = false
end
if map[y][x - 1] == 1 then
canLeft = true
end
if map[y][x - 1] ~= 1 then
canRight = false
end
if map[y + 1][x] == 1 then
canDown = true
end
if map[y + 1][x] ~= 1 then
canDown = false
end
if map[y - 1][x] == 1 then
canUp = true
end
if map[y - 1][x] ~= 1 then
canUp = false
end
end
function movePlayer(dt)
if love.keyboard.isDown("right") and canRight then
playerX = playerX + 1 * dt
end
if love.keyboard.isDown("left") and canLeft then
playerX = playerX - 1 * dt
end
if love.keyboard.isDown("down") and canDown then
playerY = playerY + 1 * dt
end
if love.keyboard.isDown("up") and canUp then
playerY = playerY - 1 * dt
end
end
答案 0 :(得分:2)
由于您在if
的第testTile(x,y)
声明中有拼写错误,因此留下的原因可能是因为卡住了。
你写了
if map[y][x - 1] ~= 1 then
canRight = false
end
它应该是
if map[y][x - 1] ~= 1 then
canLeft = false
end
答案 1 :(得分:0)
原因是输入错误:
if map[y][x - 1] ~= 1 then
canRight = false;
end
如果您无法移动canRight
,请将false
设置为left
。它可能是一个复制/粘贴错误,所以
如果您复制/粘贴代码,请务必小心。这是最常见的错误之一,这个错误很难被发现:P
另一个小建议:而不是使用
if map[y][x - 1] == 1 then
canLeft = true;
end
if map[y][x - 1] ~= 1 then
canLeft = false;
end
你可以使用
else canLeft = false;
这会使代码缩短,在我看来也更清晰。