-3

我有 15 个立方体和 1 个空游戏对象,我想对它们进行洗牌,以便它们在游戏开始时改变它们的位置。实际上我正在尝试制作 15 益智游戏。但是当立方体改变它们的位置时出现问题,它们彼此重叠。请帮助我如何解决这个问题。

运动.js

        function Start ()
        {


           ChangePosition();
           AssignPositions();

        }  



        function ChangePosition()
        {

          cube1.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube2.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube3.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube4.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube5.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube6.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube7.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube8.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube9.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube10.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube11.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube12.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube13.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube14.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

           cube15.transform.position = new Vector3(Random.Range (1,4),Random.Range (1,4),10);

        }


    function AssignPositions()
     {
          for (var i = 0; i < cubesPosition.length; ++i)
          cubeGameObjects[i].transform.position = cubesPosition[i];
     }
4

1 回答 1

-1
  1. 您的代码会打乱您的立方体数组,它是 Vector3 类型的元素数组。这只是解决问题所需的操作的一半。打乱该数组(您将其视为立方体位置数组)后,您需要将这些位置实际分配给您的立方体(游戏对象)。为此,您需要有一个立方体的游戏对象列表。像这样的东西:

    var cubes: Vector3[] = blablabla;
    var cubeGameObjects: GameObject[] = blablabla; //it's up to you how to fill this array
    
    function ChangePosition() {
      //your code goes here
    }
    
    function AssignPositions() {
      for (var i = 0; i < cubes.length; ++i)
          cubeGameObjects[i].transform.position = cubes[i];
    }
    
    function Start () 
    {
        ChangePosition();
        AssignPositions();
    }
    
  2. 我建议您将名称更改为cubes类似cubesPositions.

  3. 改组代码让我大吃一惊:D 我花了几分钟才弄清楚它为什么起作用。你自己了解它是如何工作的吗?
于 2014-05-16T13:46:57.603 回答