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

114
Views
Predecir la posición de transformación después de la rotación

Tengo un GameObject y algunos objetos que son sus hijos.

Voy a rotar este GameObject pero quiero predecir si alguno de sus hijos chocará, para poder evitar rotar. Para esto, necesito predecir la posición final de cada uno de los hijos antes de rotar al padre.

Estoy rotando al padre así:

 transform.Rotate(x, y, z, Space.World);

¿Cómo puedo predecir la posición final de cada niño después de esta operación de rotación?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Creo que resolví el problema. Usé esta función:

 private Vector3Int RotatePointAroundPivot(Vector3 point, Vector3 pivot, Vector3 angles) { returnQuaternion.Euler(angles) * (point - pivot) + pivot; }

Aparentemente gira un punto alrededor de otro en las coordenadas del espacio mundial, así que pasé la posición del niño en el point , la posición del padre en el pivot y un new Vector3(x, y, z) en los angles . El resultado parece ser la posición final del niño después de la rotación.

over 4 years ago · Santiago Trujillo Report

0

Se me ocurren 3 opciones:

1.- Puedes crear un conjunto de objetos de juego vacíos con la misma jerarquía que el objeto que pretendes rotar. El transform.Rotate(x, y, z, Space.World); aplicado a este objeto de juego paralelo daría a cada uno de los niños posiciones. Esto es similar a rotar el gameobject original, pero solo manejando una copia para tus predicciones, lo que no parece muy útil.

2.- La otra posibilidad que tienes es calcular tú mismo con transformaciones matriciales la transformación de rotación a todos los hijos de la jerarquía. Posible, pero bastante difícil sin la ayuda de todas las funciones de unidad y la transformación automática a lo largo de la jerarquía.

3.- Transform.RotateAround rota un punto en un ángulo determinado alrededor de un eje determinado. Para sus hijos determinados, puede simplemente con un objeto de juego vacío en la misma posición del mundo que el objeto de juego de niños con el que desea hacer su predicción, calcular su eje de rotación y rotar alrededor del punto de pivote, que es el padre máximo del objeto de juego original en el mundo de la jerarquía. posición. Puede hacerlo de inmediato si conoce su eje y su ángulo, o si está rotando alrededor de los 3 ejes como con transform.Rotate(x, y, z, Space.World); puede encadenar las 3 rotaciones con Transform.RotateAround aplicando las rotaciones de eulerAngles.z grados alrededor del eje z, eulerAngles.x grados alrededor del eje x y eulerAngles.y grados alrededor del eje y (en ese orden), como lo hace Transform.Rotate . El objetivo de esto es rotar el gameobject vacío con respecto a la posición principal máxima manualmente, imitando lo que haría la rotación automática por la propia jerarquía cuando se gira el gameObject principal máximo.

Espero haberme hecho entender

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!