1
resposta

Não Consigo fazer o boneco colidir com a chave e n consigo achar o erro...

-- title:  Fuguinha
-- author: Pica das galaxias
-- desc:   Rpgzin de leve
-- script: lua

jogador = {
sprite = 260,
x = 120,
y = 68,
quadrodeanimacao = 1
}

constantes = {
Largura_mapa =240,
Altura_mapa =138
}

objetos = {}

direcao = {
    {deltaX = 0,deltaY = -1},--CIMA
    {deltaX = 0,deltaY = 1},--BAIXO
    {deltaX = -1,deltaY = 0},--ESQUERDA
    {deltaX = 1,deltaY = 0}--DIREITA
    }

function colisao(ponto)
blocoid = mget((ponto.x)/8,(ponto.y-1)/8)
if blocoid >=128 then
        return true
else
        return false
    end
end

function mover(direcao)

    superioresquerdo = { 
    x = jogador.x + direcao.deltaX,
    y = jogador.y + direcao.deltaY
    }

    superiordireito = {
    x = jogador.x+14+ direcao.deltaX,
    y = jogador.y+ direcao.deltaY
    }
inferioresquerdo = {
        x = jogador.x+direcao.deltaX,
        y = jogador.y+14+direcao.deltaY
    }
inferiordireito = {
        x = jogador.x+14+direcao.deltaX,
        y = jogador.y+14+direcao.deltaY
    }


    if colisao(superioresquerdo) or 
                colisao(superiordireito)        or
                colisao(inferiordireito)  or
                colisao(inferioresquerdo) then
                --Colisao!!
                else
                jogador.quadrodeanimacao = jogador.quadrodeanimacao+0.1
                if jogador.quadrodeanimacao >=3 then
                    jogador.quadrodeanimacao = 1
                    end
                jogador.x = jogador.x+direcao.deltaX
                jogador.y = jogador.y+direcao.deltaY
            end

end

  animacao = {
         {256,258},
            {260,262}, --primeiro e segundo quadro da anim
         {264,266},
         {268,270},
        }

function movimento()

for tecla = 0,3 do
    if btn(tecla) then 

        jogador.sprite = animacao[tecla+1][math.floor(jogador.quadrodeanimacao)]

        mover(direcao[tecla+1])

end
    end


end-- fim do movimento()

function desenhomapa()
    cls()

    map(0,--posicao x no mapa
                    0,--posicao y no mapa
                    constantes.Largura_mapa,--largura do desenho
                    constantes.Altura_mapa,--altura do desenho
                    0,--qual ponto colocar x inicial
                    0)--qual ponto colocar y inicial
end--fim do desenho do mapa

function desenhopersonagem()
    spr(jogador.sprite,
     jogador.x,
        jogador.y,
     6,--cor de fundo
     1,--escala
     0,--espelhar
     0,--rotacionar
     2,--quantos blocos para direita
     2)--quantos blocos para para baixo

end--fim do desenho do personagem.


function desenhaobjetos()

for indice, objetos in pairs(objetos) do

        spr(objetos.sprite,
        objetos.x*8,
        objetos.y*8,
        objetos.cordefundo,
        1,
        0,
        0,
        2,
        2)
        end
                end

function desenho()

    desenhomapa()
    desenhopersonagem()
    desenhaobjetos()

end--fim do desenho

function temcolisao(A,B)

local cimaDeA = A.y
local direitaDeA = A.x + 16
local esquerdaDeA = A.x
local baixoDeA = A.y + 16

local cimaDeB = B.y
local direitaDeB = B.x +16
local esquerdaDeB = B.x
local baixoDeB = B.y + 16


if cimaDeA > baixoDeB or 
            direitaDeA < esquerdaDeB or
            esquerdaDeA > direitaDeB or
            baixoDeA < cimaDeB then
            return false
end
            return true
    end

function verificacolisao()
        for indice,objetos in pairs(objetos) do
                    if temcolisao(jogador,objetos)then
                            fazcolisao(indice)
            else
            end
        end
    end


function fazcolisao(indice)
table.remove ( objetos,indice)
end

function TIC()

    movimento()
    verificacolisao()
    desenho()                    


end

function criachave(x,y)

local chave = { 
sprite = 364,
x = x,
y = y,
cordefundo = 6
}
return chave

end

function inicializa()

local chave = criachave(5,12)
table.insert(objetos,chave)

end

inicializa()










1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!