Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

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));

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software