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

Vetor Rigidbody

Bom dia! Espero que esteja bem!

Não entendi muito bem os parâmetros usados na movimentação no código do Rigidbody

GetComponent<Rigidbody>().MovePosition
    (GetComponent<Rigidbody>().position +
    (direction * speedP1 * Time.deltaTime));

Entendi que a movimentação é através de um vetor, e que pegamos esse mesmo vetor (que no caso é a direção) para fazer a movimentação, que nem estávamos fazendo com a movimentação. Mas para que multiplicamos esse vetor pela velocidade e o deltatime?

Agradeço desde já!

1 resposta
solução!

Oi Julio! Bom dia, espero que você também esteja bem!

Vamos lá! No código que você mencionou, temos a seguinte linha:

GetComponent<Rigidbody>().MovePosition
    (GetComponent<Rigidbody>().position +
    (direction * speedP1 * Time.deltaTime));

Aqui, estamos utilizando o componente Rigidbody para mover a posição do objeto. Vou explicar cada parte para você:

  1. GetComponent<Rigidbody>().position: Isso pega a posição atual do objeto no espaço 3D.

  2. direction: Este é um vetor que representa a direção em que você deseja mover o objeto. Ele é calculado com base na entrada do jogador (por exemplo, teclas de seta ou WASD).

  3. speedP1: Esta é a velocidade com a qual você deseja que o objeto se mova. É um valor que você define para controlar a rapidez do movimento.

  4. Time.deltaTime: Este é um valor que representa o tempo que passou desde o último frame. Multiplicar pela deltaTime garante que o movimento seja suave e independente da taxa de quadros do jogo. Sem isso, o movimento poderia ser mais rápido ou mais lento dependendo do desempenho do jogo.

Então, quando você multiplica direction * speedP1 * Time.deltaTime, você está basicamente dizendo: "Eu quero mover meu objeto na direção especificada, com a velocidade especificada, e quero que este movimento seja suave e consistente ao longo do tempo".

Por exemplo, se direction for (1, 0, 0), speedP1 for 5, e Time.deltaTime for 0.02 (supondo que o jogo está rodando a 50 fps), o resultado será:

(1, 0, 0) * 5 * 0.02 = (0.1, 0, 0)

Isso significa que a posição do objeto será atualizada em 0.1 unidades na direção X a cada frame dando no final de 1 seg os 5 que você gostaria.

Espero ter ajudado e bons estudos!