我创建了七个不同的GameObjects并将它们添加到Vector3数组中以创建一个行队列。我想要实现的是一种旋转运动,其中第一个物体占据第7个位置,第二个物体占据第一个位置,依此类推。
我希望你的帮助让这个功能移动这个对象。这就是我到目前为止所做的:
using UnityEngine;
using System.Collections;
public class StairsController : MonoBehaviour {
public GameObject[] degrau;
Vector3[] positionArray = new Vector3[7];
private int i = 6;
private int a = 6;
// Use this for initialization
void Start () {
positionArray [i-6] = degrau[a-6].transform.position;
Debug.Log (positionArray [i-6]);
positionArray [i-5] = degrau[a-5].transform.position;
Debug.Log (positionArray [i-5]);
positionArray [i-4] = degrau[a-4].transform.position;
Debug.Log (positionArray [i-4]);
positionArray [i-3] = degrau[a-3].transform.position;
Debug.Log (positionArray [i-3]);
positionArray [i-2] = degrau[a-2].transform.position;
Debug.Log (positionArray [i-2]);
positionArray [i-1] = degrau[a-1].transform.position;
Debug.Log (positionArray [i-1]);
positionArray [i] = degrau[a].transform.position;
Debug.Log (positionArray [i]);
}
public void SimpleMov (){
// i need help here
degrau [a].transform.position = positionArray [i - 1];
}
}
但这不应该正常运作,因为它没有进行旋转运动。如何解决这个问题才能实现这一目标。
谢谢!
答案 0 :(得分:2)
这个修改过的模数函数会给你选择的索引(通常是i + 1),但如果超过长度的边界,它将循环回到前面。
因此,如果你想要一个7长阵列的第8个索引,你将返回0(回到开始)。
int mod(int i, int m) { return ((i % m) + m) % m; }
// Set this to 0 inside of Start()
int startIndex;
public void SimpleMov (){
int positionIndex = startIndex;
for (int i = 0 ; i < degrau.Length ; i++)
{
positionIndex++;
degrau[i].transform.position = positionArray [mod(positionIndex, positionArray.Length)]
}
startIndex++;
}