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

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

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 Denunciar

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