3
respostas

Duvida no if

Professores alguém pode me explicar esse if?

  if((x > alvoX - raio) && (x < alvoX + raio) && 
        (y > alvoY - raio) && (y < alvoY + raio)) {
            alert("acertou!");

não entendi esse if se alguem pode me dar uma explicação concisa e completa desse if por favor?

3 respostas

Olá, Fabio!

O que ele está verificando é:

Se o valor de x for maior do que o valor do resultado da conta alvoX - raio, e se x for menor do que o resultado da conta alvoX + raio, e se o valor de y for maior do que resultado da conta alvoY - raio e se y for menor do que o resultado de alvoY + raio, a mensagem "acertou!" será exibida.

Como não sei os valores de cada variável não consigo dar exemplos melhores, mas, ficou mais claro?

Então eu queria entender o por que os valores dex e y tem de ser menor e maior do que alvoX e alvoY - e + raio não entendi por que ele tem que ser ao mesmo tempo menor e ao mesmo tempo maior?

e também não entendi o que é o alvoX - raio e alvoX + raio e alvoY - raio e alvoY + raio alguém pode me explicar?

Fabio boa noite, deixa eu tentar te explicar,

Primeiro quando somamos e diminuímos o raio na verdade se você presta atenção estamos construindo um quadrado que chamamos de 'hitbox', precisamos de hitbox para tratar colisões saber se algo colidiu o tocou na nossa hitbox.

Segundo quando é feita a verificação se é maior é menor na verdade estamos verificando se está dentro da hitbox.

Exemplo:

raio = 10

alvo_x = 45

alvo_x + raio

alvo_mais_raio = 55

alvo_x - raio

alvo_menos_raio = 35


#(x > alvoX - raio) && (x < alvoX + raio)
#(x > alvo_menos_raio) && (x <alvo_mais_raio )

if (x > 35) && (x <55)

o que o código faz é verificar se o valor entre os valores do raio ou seja dentro da hitbox