Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

115
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda