Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Dúvida em operação no MovePosition

No seguinte código, consigo o resultado esperado:

       Vector3 direction = player.transform.position - transform.position;

        _rb.MovePosition(_rb.position + direction.normalized * Time.deltaTime * speed);

Já aqui, pelo parêntese, o resultado é totalmente errado e meu NPC fica parado em um canto aleatório da fase

       Vector3 direction = player.transform.position - transform.position;

        _rb.MovePosition((_rb.position + direction.normalized) * Time.deltaTime * speed);

Alguém sabe me dizer por quê isso acontece? Eu acredito que seja porque eu to mexendo diretamente com minha posição inicial e multiplicando ela, ao invés de multiplicar pelo vetor de direção, é isso?

1 resposta
solução

Oi, Juan, tudo bem?

O MovePosition interpola a sua posição com a posição que você quer ir, no nosso caso estamos pegando uma posição relativa a onde estamos senão moveríamos estranho.

No seu caso por causa do parênteses você está mudando a ordem de multiplicação porque o vetor a ser multiplicado é o vetor direção e depois fazemos a soma com a posição que estamos para ter uma posição relativa. Então se fossemos colocar parênteses seria algo como:

Vector3 direction = player.transform.position - transform.position;

rb.MovePosition(_rb.position + (direction.normalized) * Time.deltaTime * speed));