Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

240
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!