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

236
Visualizações
Gire las posiciones de tres objetos del juego al hacer clic en un botón de la interfaz de usuario

Como dice el título, tengo una escena con tres objetos, un cubo, una esfera y un cilindro que puedes ver en la imagen de abajo.

escena inicial

Lo que estoy tratando de lograr es que cuando presiono el botón "Rotar", los tres objetos giren en sentido contrario a las agujas del reloj, por lo que el cilindro va donde estaba el cubo, el cubo va donde estaba la esfera y la esfera va donde estaba el cilindro. Si vuelvo a hacer clic en el botón, giran una vez más y así sucesivamente. Hasta ahora, logré hacerlos girar alrededor de un objeto vacío en el centro del "triángulo" que forman con su posición inicial.

Esto es lo que sucede cuando hago clic por primera vez en el botón "Rotar":

ingrese la descripción de la imagen aquí

Como pueden ver, el objeto gira, pero no mantienen la misma coordenada del objeto que estaba antes en esa posición, así que estaba pensando en que intercambiaran coordenadas. ¿Cómo puedo lograr eso o hacerlos rotar como quiero?

Aquí está el código que escribí hasta ahora:

 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class RotateObject : MonoBehaviour { //rotating objects [SerializeField] private GameObject cube; [SerializeField] private GameObject sphere; [SerializeField] private GameObject cylinder; private Renderer cubeRenderer; private Renderer sphereRenderer; private Renderer cylinderRenderer; //rotation target public GameObject target; private void Start() { cubeRenderer = cube.GetComponent<Renderer>(); sphereRenderer = sphere.GetComponent<Renderer>(); cylinderRenderer = cylinder.GetComponent<Renderer>(); gameObject.GetComponent<Button>().onClick.AddListener(Rotate); } void Rotate() { //rotate objects by 120 degrees cube.transform.RotateAround(target.transform.position, Vector3.up, -120); sphere.transform.RotateAround(target.transform.position, Vector3.up, -120); cylinder.transform.RotateAround(target.transform.position, Vector3.up, -120); } }

¡Gracias de antemano por ayudarme!

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

0

La forma más fácil de hacer que un objeto (s) gire alrededor de un punto es tenerlo como hijo del punto y luego rotar el punto en sí.

Jerarquía de objetos

Rotator Script que se colocará en el objeto principal:

 public class RotateObjects : MonoBehaviour { [SerializeField] Button rotateButton; // Start is called before the first frame update void Start() { rotateButton.onClick.RemoveAllListeners(); rotateButton.onClick.AddListener(RotateClockwise); } void RotateClockwise() { float newRotation = (360 / transform.childCount); transform.Rotate(new Vector3(0, newRotation, 0)); } }
over 4 years ago · Santiago Trujillo Relatório

0

Estás girando alrededor de un objeto. Como la tierra gira alrededor del sol; eso significa que cambiará su posición. Usar

 transform.rotation = new Quaternion(rotx, roty, rotz, rotw);

o

 transform.Rotate(rotx, roty, rotz);

En lugar de rotar sobre un punto, rota la forma, es ella misma.

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