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

116
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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