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.
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.
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:
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
.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:
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
.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!