7
respostas

deu algo de errado

eu fiz do exato jeito que ta e veio essa mensagem de erro

Assets\codigos\controle.cs(6,40): error CS0535: 'controle' does not implement interface member 'Imatavel.TomarDano(int)'

olha o codigo

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public interface Imatavel
{
    void TomarDano(int dano);

    void morrer();
}

e o codigo do personagem (ate a linha que deu problema)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class controle : MonoBehaviour, Imatavel

me diz ai o que eu fiz de errado?

7 respostas

Oi, Fred, como você implementou a interface agora tem que colocar esses métodos em uso que seria o TomarDano e morrer pode ser que você tenha colocado mas com nomes diferentes, dá uma conferida que tem que ser bem certinho.

eu vi no codigo do controle e tem umas linhas de codigo que são assim:

public void TomarDano() { StatusJogador.Vida -= 30;

    ScriptInterface.atualizarSliderVidaJogador();
    ControleSom.instancia.PlayOneShot(SomDeDano);

    if (StatusJogador.Vida <= 0)
    {
        morrer();
    }


}

public void morrer()
{
    Time.timeScale = 0;
    TextoGameOver.SetActive(true);
}

}

e no codigo do imorrivel as coisas estao assim:

using System.Collections; using System.Collections.Generic; using UnityEngine;

public interface Imatavel { void TomarDano(int dano);

void morrer();

}

isso tem alguma coisa aver com o problema?

Faltou declarar no método TomarDano a variável do dano, você tá sempre usando 30, então ou remove a variável da assinatura da interface ou declara a variável no método do jogador, as assinaturas tem que ser iguais.

Uma coisa que eu recomendo é não seguir o vídeo todo escrevendo tudo, vai pausando testando a cada novo método, nova linha vê se tudo tá certinho, assim você já pega o problema logo de cara. Eu faço tudo de uma vez porque eu já testei esse código anteriormente haha

Bons estudos!

eu tenho que declarar a variavel no controle ou no Imatavel?

Oi, Fred, dá uma olhada no vídeo novamente, sua interface tá diferente e por isso o problema a assinatura tem que ser igual.

Então ou tira a variável da interface ou coloca no controle.

eu vi o video e o comando do control ponto não ta funcionando, eu aperto e não da

Você tá usando VS Code ou o Visual Studio? Tenta clicar com o botão direito e ver as opções.

Mas de qualquer forma o Ctrl+. é só pra implementar a interface, escrever o método dá no mesmo :)