1
resposta

Duvida no Script

Nos minutos 7:02 ele coloca como parametro do IF (!this.pontuei &&).

Eu queria saber o motivo de ter colocado a exclamação ! na frente, percebi que sem a exclamação o código não é executado.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Leandro!

A exclamação ! (ponto de exclamação) é usada para negar uma expressão booleana em muitas linguagens de programação, incluindo C#.

No trecho de código que você mostrou, o if está verificando duas condições:

  1. this.pontuei: Esta é uma variável booleana que provavelmente indica se um ponto já foi contabilizado ou não. Seu valor inicial pode ser false.
  2. this.transform.position.x < posicaoDoAviao.x: Esta condição compara a posição X do objeto que possui esse script (this.transform.position.x) com a posição X do avião (posicaoDoAviao.x). Se a posição X do objeto for menor que a posição X do avião, a condição será verdadeira.

Agora, vamos analisar o código do if:

if (this.pontuei && this.transform.position.x < posicaoDoAviao.x)
{
    Debug.Log("Ponto");
    this.pontuei = true;
    this.pontuacao.AdicionarPontos();
}

Aqui está o que acontece:

  1. Se this.pontuei for false, a primeira parte da condição (this.pontuei && ...) já será false, e o código dentro do if não será executado. Isso ocorre porque a expressão false && qualquer_coisa sempre resultará em false, independentemente do valor de qualquer_coisa.
  2. Se this.pontuei for true, a primeira parte da condição (this.pontuei && ...) ainda precisa ser avaliada para determinar se o código dentro do if será executado ou não. Nesse caso, a segunda parte da condição (this.transform.position.x < posicaoDoAviao.x) será avaliada. Se for verdadeira, o código dentro do if será executado.

Ou seja, o objetivo dessa estrutura condicional é garantir que o código dentro do if seja executado somente se this.pontuei for true e a posição X do objeto for menor que a posição X do avião.

Se você remover o ! da frente de this.pontuei e deixar apenas if (this.pontuei && ...), o código dentro do if não será executado quando this.pontuei for true, e você não terá o comportamento desejado.

Espero que isso esclareça o motivo da inclusão do ! na condição. Se tiver mais dúvidas ou quiser mais esclarecimentos, sinta-se à vontade para perguntar!