【发布时间】:2021-03-02 14:40:20
【问题描述】:
正如标题所说,我有一个包含三个对象的场景,一个立方体、一个球体和一个圆柱体,如下图所示。
我想要实现的是,当我按下“旋转”按钮时,三个对象以逆时针方向旋转,因此圆柱体移动到立方体所在的位置,立方体移动到球体所在的位置,并且球体去圆柱体所在的地方。如果我再次单击该按钮,它们会再次旋转,依此类推。到目前为止,我设法让它们围绕它们以初始位置形成的“三角形”中心的一个空对象旋转。
这是我第一次单击“旋转”按钮时发生的情况:
如您所见,对象会旋转,但它们与之前处于该位置的对象的坐标不同,因此我正在考虑让它们交换坐标。我怎样才能做到这一点或让它们按我的意愿旋转?
这是我目前写的代码:
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);
}
}
提前感谢您帮助我!
【问题讨论】: