1
resposta

Pergunta Sobre Quaternion

No código: if (distancia > GetComponent().radius + Jogador.GetComponent().radius+0.5) { Vector3 direcao = Jogador.transform.position - transform.position; print(direcao); GetComponent().MovePosition(GetComponent().position + ((direcao / direcao.magnitude) * Time.deltaTime * Velocidade));

        Quaternion novaRotacao = Quaternion.LookRotation(direcao);
        GetComponent<Rigidbody>().MoveRotation(novaRotacao);
    }

Porque eu não posso substituir esta linha Quaternion novaRotacao = Quaternion.LookRotation(direcao); por Quaternion novaRotacao = Quaternion.LookRotation(Jogador.transforme.position); já que essa é a posição do player logo é a posição que o meu inimigo precisa olhar ? Obs: Teria algum curso q eu poderia fazer para entender um pouco mais sobre a Normalização e o Quaternion aqui na Alura ? De repente um curso que trate sobre essa parte da Matemática aqui no site ?

1 resposta

Oi, Victor, tudo bem?

Essa é interessante e demora um pouco pra se acostumar mesmo mas se você colocar a posição do jogador lá o zumbi vai olhar para a posição do jogador em relação à posição X: 0, Y: 0, Z: 0 então ele pode olhar para um lado completamente errado.

Fiz um desenho tosco pra explicar releve minhas habilidades de desenhista hahahaha. O Z é o Zumbi e P é o Player

Então se a gente calculasse direto da posição do jogador levando em consideração a posição zero o calculo sairia o vetor vermelho da imagem e aplicado no zumbi ele iria olhar para a posição em verde:

Mas nós não queremos que o zumbi olhe para o jogador em relação ao zero, queremos que o zumbi olhe para o jogador em relação à posição dele, por isso usamos o vetor direcao que criamos antes.

Se o zumbi estivesse posicionado no 0,0,0 certinho a primeira rotação funcionaria perfeitamente mas como ele não está temos que fazer esse "cancelamento" da posição dele.

Isso está relacionado a algebra linear e vetores, tem cursos sobre o assunto aqui na Alura.

Sobre Quaternion ele é um conceito bem avançado para tratar rotação em espaço tridimensional e veio para resolver alguns problemas. Acho que entender o conceito é mais importante do que saber calcular ou fazer contas com ele. Então entender vetores num ambiente bidimensional já bastante interessante.

Se precisar de mais alguma explicação estou por aqui :)