public void Update(){
GameObject[] BoxArray = new GameObject[16]{BoxLid1, BoxLid2, BoxLid3, BoxLid4, BoxLid5, BoxLid6, BoxLid7, BoxLid8, BoxLid9, BoxLid10, BoxLid11, BoxLid12, BoxLid13, BoxLid14, BoxLid15, BoxLid16};
for(int i = 0; i < BoxArray.Length; i++){
Transform theBoxLid = BoxArray[i].transform;
BlueBox.transform.Translate(theBoxLid.localPosition.x, theBoxLid.localPosition.y, 0);
Debug.Log(theBoxLid.localPosition.x);
}
}
我上面提到的Lids不是问题所在。我希望blueBox在数组中的BoxLids上移动,但它根本不移动。
我找到了一个解决方案,它是:
IEnumerator MoveBlueBox(){
GameObject[] BoxArray = new GameObject[16]{BoxLid1, BoxLid2, BoxLid3, BoxLid4, BoxLid5, BoxLid6, BoxLid7, BoxLid8, BoxLid9, BoxLid10, BoxLid11, BoxLid12, BoxLid13, BoxLid14, BoxLid15, BoxLid16};
for(int i = 0; i < BoxArray.Length; i++){
Transform theBox = BoxArray[i].transform;
BlueBox.transform.position = new Vector3(theBox.position.x, theBox.position.y, 0.0f);
yield return new WaitForSeconds(0.1f);
}
}
通过循环遍历数组并更改BlueBoxs变换位置,我每隔0.1秒将BlueBox放在BoxArray的每个方框的顶部。我发现的主要事情是我需要使用一个&#34;新的Vector3&#34;将框正确移动到BoxArrays x,y和z坐标中的每个框。
答案 0 :(得分:3)
我仍然不确定“移动”是什么意思。你想先将你的蓝盒移动到BoxLid1,然后移动BoxLid2等吗?
另外,为了让Box看起来像移动你需要每次调用Update
时更新你的位置。你可以采取各种方式,例如MoveTowards
的{{1}}函数:
Vector3
这会将您的public class Move : MonoBehaviour
{
public GameObject boxLid1;
public float speed = 5.0f;
public void Update()
{
BlueBox.transform.position = Vector3.MoveTowards(
BlueBox.transform.position, boxLid1.transform.position,
Time.deltaTime * speed);
}
}
以一定的速度移动到BlueBox
,直到达到它为止。另请注意,这是示例代码,我没有测试过。
答案 1 :(得分:0)
IEnumerator MoveBlueBox(){
GameObject[] BoxArray = new GameObject[16]{BoxLid1, BoxLid2, BoxLid3, BoxLid4, BoxLid5, BoxLid6, BoxLid7, BoxLid8, BoxLid9, BoxLid10, BoxLid11, BoxLid12, BoxLid13, BoxLid14, BoxLid15, BoxLid16};
for(int i = 0; i < BoxArray.Length; i++){
Transform theBox = BoxArray[i].transform;
BlueBox.transform.position = new Vector3(theBox.position.x, theBox.position.y, 0.0f);
yield return new WaitForSeconds(0.1f);
}
}
我认为这要归功于那些真正想要帮助的人。