Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

erro: attempt to index a nil value (local ponto)

-- title:  Fuga Das Sombras 
-- author: Eu Mesmo
-- desc:   Um jogo sobre fuga
-- script: lua

jogador = {
sprite = 2,
x = 112,
y = 60,
}
constante = {
ldm = 240,
adm = 138

}
function TemColisaoComMapa(ponto)
blocoId=mget(ponto.x / 8,ponto.y / 8)
if blocoId >=128 then 
return true
else
return false
end
end


function atualiza()
--cima
if btn(0) then
superiorEsquerdo= {
x = jogador.x - 8,
y = jogador.y - 8 - 1
}
superiorDireito= {
x = jogador.x + 8,
y = jogador.y - 8 - 1
}
if TemColisaoComMapa(superiorEsquerdo) or
   TemColisaoComMapa(superioDireito) then
else
jogador.y = jogador.y-1
end






blocoId=mget((jogador.x+8-8) / 8, (jogador.y+8-8) / 8)
if blocoId < 128 then

end
end

--baixo
if btn(1) then
jogador.y = jogador.y+1
end

--esquerda
if btn(2) then
jogador.x = jogador.x-1
end

--direita
if btn(3) then
jogador.x = jogador.x+1
end

--sprite cima
if btn(0) then
jogador.sprite = 6
end
--sprite baixo
if btn(1) then
jogador.sprite = 8
end
--Sprite esquerda
if btn(2) then
jogador.sprite = 4
end
--sprite direita
if btn(3) then
jogador.sprite = 2
end


end


function mapa()
map(
0,--POSICAO X NO MAPA
0,--POSICAO Y NO MAPA
constante.ldm,--LARGURA
constante.adm,--ALTURA
0,--ONDE COLOCAR O X INICIAL
0--ONDE COLOCAR O Y INICIAL
)
end

function player()
spr(
jogador.sprite, 
jogador.x, 
jogador.y, 
0,--Cor de fundo 
1,--Tamanho do personagem 
0,--Espelhagem
0,--Rotacao 
2,--quan de quad horizontal 
2--quan de quad vertical
)
end

function desenha()

cls()
mapa()
player()

print(jogador.y)


end

function TIC()
atualiza()
desenha()
end  

eu estava seguindo as instruções da aula, porem, no momento em que vai testar se a colisão esta sendo reconhecido no dois pontos (SuperiorEsquerdo e SuperiorDireito) aparece a de erro mensagem no titulo

1 resposta

Oi Gustavo, tudo bom?

Me parece que você escreveu errado o nome da variável superiorDireito dentro do seu if.

if TemColisaoComMapa(superiorEsquerdo) or TemColisaoComMapa(superioDireito) then