Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

72
Visualizações
vector3 lerp basado en 2 flotadores/ejes diferentes?

Estoy tratando de mover un objeto alrededor de mi reproductor en un juego de desplazamiento lateral 2.5d basado en la entrada del dispositivo analógico. La cuestión es que mi reproductor gira alrededor del mundo (con la cámara fija a un lado), por lo que su dirección horizontal local (transform.right) no siempre es la misma dirección global x para su dirección local ascendente (transform.up). Esto funcionó bien cuando la dirección de movimiento del jugador se fijó en el eje X al establecer un desplazamiento de la posición de los jugadores y agregar el análogo en el mismo eje de la siguiente manera:

 Vector3 endPoint = new Vector3(transform.position.x + inputs.x * floraDistanceMultiplier, transform.position.y + inputs.y * floraDistanceMultiplier, transform.position.z);

pero ahora que el jugador está "fuera del eje", por así decirlo, esto, por supuesto, no funciona.

Puedo hacer que funcione un eje a la vez:

 Vector3 h = player.transform.position + player.transform.right * floraDistanceMultiplier * inputs.x; Vector3 v = player.transform.position + player.transform.up * floraDistanceMultiplier * inputs.y;

Pero no pude averiguar cómo hacer que ambos vectores influyan en la posición final. Supongo que usar localPosition o aplicar x e y del vector final manualmente no funcionó porque x e y son siempre globales en lugar de definir la transformación. Correcto como una especie de eje X local.

Tuve la idea de engañar a los dos, lo que casi tiene resultados exitosos, ya que el punto final se mueve correctamente alrededor del jugador de izquierda a arriba, sin embargo, no en un círculo completo alrededor del jugador, y la diagonal está mucho más cerca que el completo. medida hacia arriba y hacia la izquierda.

 Vector3 endPoint = Vector3.Lerp(h, v, inputs.x + inputs.y);

¿Hay una mejor manera de hacer esto en general? ¿O hay alguna forma de leer entre 2 vectores usando 2 flotadores? (el stick analógico x e y) o usando un vector? ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Lo que haces originalmente

 var endPoint = new Vector3(transform.position.x + inputs.x * floraDistanceMultiplier, transform.position.y + inputs.y * floraDistanceMultiplier, transform.position.z);

básicamente es igual a usar

 var endPoint = transform.position + Vector3.right * input.x * floraDistanceMultiplier + Vector3.up * input.y * floraDistanceMultiplier;

Entonces, para convertir esto en espacio local, simplemente reemplace los vectores globales Vector3.right y Vector3.up por los locales transform.right y transform.up ya deberían hacerlo.

 var endPoint = transform.position + transform.right * input.x * floraDistanceMultiplier + transform.up * input.y * floraDistanceMultiplier;

Otra forma de escribirlo un poco más corto sería

 var endPoint = transform.position + (Vector3)input * floraDistanceMultiplier;

y para convertir este en el espacio local simplemente multiplique ( operador Quaternion * Vector3 ) el vector de movimiento con la rotación del jugador

 var endPoint = transform.position + transform.rotation * input * floraDistanceMultiplier;

Como alternativa, si no necesita necesariamente el endPoint como vector, puede usar directamente transform.Translate donde simplemente puede decidir a través del segundo parámetro si desea aplicar el movimiento en el mundo o en el espacio local.

 transform.Translate(input * floraDistanceMultiplier);

Por defecto, esto ya mueve el objeto en el espacio local. Sin embargo, tenga en cuenta que aquí también se tiene en cuenta la escala de sus objetos. Entonces esto podría no comportarse como se esperaba.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda