1
resposta

não estou conseguindo fazer a colisão para cima

eu consegui criar o mapa, o personagem e fazer ele se mecher, mas na hora de fazer a colisão para cima da erro ( ele para de andar para cima porém continua para os lados e para baixo) , alguem pode me dizer o que estou fazendo de errado :D

-- title:  primeiro jogo
-- author: alura
-- desc:   rpg 2d
-- script: lua

t=0
x=96
y=24
constantes = {
 larguratela = 240,
 alturatela = 136
}

jogador = {
    sprite = 0,
    x = 120,
    y = 68
}

function atualiza()
  -- cima
  if btn(0) then
        blocoId = mget((jogador.x-8) / 8, (jogador.y-8) / 8)
        if blocoId < 128 then
        jogador.y = jogador.y + 1
        end
            end

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

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

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

function desenhamapa()
 cls()
    map(0, -- posicao x no mapa
  0, -- posicao y no mapa
  constantes.larguratela, -- quanto desenhar x
  constantes.alturatela, -- quanto desenhar y
  0, --  em qual ponto colocar o x
  0) -- em qual ponto colocar o y
end

function desnhajogador()
spr(jogador.sprite,
    jogador.x - 8,
    jogador.y - 8,
    0,  -- cor de fundo
    1,  -- escala
    0,  -- espelhar
    0,  -- rotacionar
    2,  -- quantos blocos para direita 
    2)  -- quantos blocos para baix
end

function TIC()

                atualiza()

    desenhamapa()

    desnhajogador()
                print(jogador.y)

end


1 resposta

Olá Felipe, peço desculpas pela demora no retorno.

O detalhe é o cálculo da posição quando vamos para cima com o personagem, na linha 25 o código está jogador.y = jogador.y + 1, mas para subir temos que diminuir o valor de jogador.y, então basta trocar o + por - nessa parte para corrigir.