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

238
Visualizações
¿Cómo aplicar velocidad a un objeto principal que ignora la masa del objeto secundario en Unity?

Estoy creando una aplicación de visualización de datos de realidad virtual en Unity y tengo un padre con muchos hijos (solo algunos cubos primitivos) que puedo lanzar alrededor de la escena simplemente configurando el cuerpo rígido del padre a la misma velocidad que mi controlador de realidad virtual rastreado.

 Rigidbody rb = GetComponent<Rigidbody>(); Vector3 controllerVelocity = Player.instance.rightHand.GetTrackedObjectVelocity(); // how I ref the controller velocity in SteamVR rb.velocity = controllerVelocity * 2f; // the 2f is just to speed up the velocity

El código anterior funciona bien, pero el problema es que creo que la escala de los objetos secundarios, que el jugador puede ajustar, está afectando la velocidad a la que se mueve el elemento principal. ¿O tal vez solo cuando los niños son muy grandes... la velocidad del controlador es comparativamente demasiado lenta? Básicamente necesito que este no sea el caso; Quiero que el cuerpo rígido de los padres se mueva aproximadamente a la misma velocidad sin importar las escalas/masas de los niños.

Entonces, para lograr eso, pensé en usar Rigidbody.AddForce, pero no parece estar haciendo ninguna diferencia, es decir, los niños más grandes todavía se mueven más lento. Esto es lo que tengo hasta ahora:

 Rigidbody rb = GetComponent<Rigidbody>(); Vector3 controllerVelocity = Player.instance.rightHand.GetTrackedObjectVelocity(); rb.AddForce(controllerVelocity * 2f, ForceMode.VelocityChange);

También probé ForceMode.Acceleration pero luego no se movió nada. ¿Estoy usando AddForce incorrectamente? ¿O solo necesito un multiplicador de escala basado en el tamaño de los niños? Cualquier ayuda es bienvenida.

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

0

No te respondo con la respuesta segura sino con una propuesta. Al cambiar la escala, presumiblemente no está cambiando la masa del objeto global, pero podría estar cambiando su centro de masa que afecta las inercias.

De los documentos "Si no establece el centro de masa de un script, se calculará automáticamente a partir de todos los colisionadores adjuntos al cuerpo rígido"

Lo que intentaría es obtener el valor del centro de masa y restablecer el mismo centro de masa después de la modificación de la escala para verificar si podría ser que el movimiento descrito por la fuerza aplicada sea el mismo que antes.

over 4 years ago · Santiago Trujillo Relatório

0

No es ideal, pero pude imitar el resultado deseado al hacer lo siguiente:

 float parentMagnitude = transform.lossyScale.magnitude; float thrustAdjuster = parentMagnitude * 5f; Vector3 controllerVelocity = Player.instance.rightHand.GetTrackedObjectVelocity(); rb.velocity = controllerVelocity * thrustAdjuster;
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