타일 충돌 방식에 문제가 있습니다. 어떤 이유로 플레이어는 할 수 없을 때 어떤 타일을 통과 할 수 있습니다. 또한, 왜 그런지 모르겠지만 왜 붙어있을 때 왼쪽으로 물체를 통해 이동할 수 있지만 왼쪽에만 있습니다. 아래에 몇 가지 코드를 게시하고 누군가가 올바른 방향으로 나를 가리킬 수 있다면 좋을 것입니다. (또는 누군가가 빠른 해결책을 찾을 수 있다면 더 좋을 것입니다!) 내 플레이어 이동 메서드와 타일 충돌 메서드는 모두 update 메서드에서 호출됩니다. 당신이 testTile(x,y)
의 4 if
문에 오타가 있기 때문에이 붙어 때 이유 왼쪽이 작동Love2D 타일 기반 충돌이 작동하지 않습니다.
지도 타일 COLLISIONS
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
StackOverflow에 오신 것을 환영합니다. 질문에 태그를 지정할 때는주의를 기울여서 *이 * 사이트에서 의미가 무엇인지에 대한 설명을 확인하십시오. 예를 들어, 전문가 및 다른 프로그래머를위한 사이트이기 때문에 RPG 태그는 게이머의 느슨한 용어가 아닌 전문 프로그래머가 주로 사용하는 RPG 언어를 의미합니다. – WarrenT