Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Minha chave some com outros objetos

A minha chave sempre q pega, funciona ok mas assim q tento abrir a porta ela elimina outro objeto e não a porta e ela sempre elimina os mais a esquerda primeiro segue o codigo abaixo

Meu verifcaColisaoComObjetos

function verificaColisaoComObjetos(novaPosicao)
 for indice, objeto in pairs(objetos) do
  if temColisao(novaPosicao, objeto) then
   if objeto.sprite == Constantes.SPRITE_CHAVEam then
    return fazColisaoDoJogadorComAChave(indice)
   elseif objeto.sprite == Constantes.SPRITE_PORTAam then
    return fazColisaoDoJogadorComAPorta(indice)
            elseif objeto.sprite == Constantes.SPRITE_INIMIGO then
                return fazColisaoDoJogadorComOInimigo(indice)
   end
  end
 end
 return false
end
4 respostas

meu colisao com porta

function fazColisaoDoJogadorComAPorta()

        if jogador.chaves > 0 then
            jogador.chaves = jogador.chaves -1
                table.remove(objetos, indice)
                sfx(Constantes.ID_SFX_PORTA,
                9,
                32,
                0,
                8,
                5)

                return false
end
                return true
end

meu tem colisao caso precise de mais alguma linhe me avise aqui

function temColisao(objetoA, objetoB)
 local esquerdaDeB = objetoB.x - 8
 local direitaDeB = objetoB.x + 7
 local baixoDeB = objetoB.y + 7
 local cimaDeB = objetoB.y - 8

    local esquerdaDeA = objetoA.x - 8
 local direitaDeA = objetoA.x + 7
 local baixoDeA = objetoA.y + 7
 local cimaDeA = objetoA.y - 8

 if esquerdaDeB > direitaDeA or
  direitaDeB < esquerdaDeA or 
  baixoDeA < cimaDeB or
  cimaDeA > baixoDeB then
  return false
 end
 return true
end
solução!

Fiz mais uns testes e parece que não é so os objetos mais a esquerda se tiver um objeto a mais o programa vai priorizar ele ao invez da porta se tem o inimigo no mapa o destrancamento da porta some com o inimigo não com a porta

Eu so tinha esquecido do indice em uma parte