Esempio n. 1
0
    public void GenerateObstacles()
    {
        Vector3[] positions = new Vector3[] { new Vector3(500, 0, 500),
                                              new Vector3(500, 0, -500), new Vector3(-500, 0, -500), new Vector3(-500, 0, 500) };
        ClearObstacles();
        m_obstacleDataArray = new BehaviorPlugin.ObstacleData[m_obstacleNum];
        for (int i = 0; i < m_obstacleNum; ++i)
        {
            // Generates random obstacles
            GameObject obstacle = GameObject.Instantiate(m_obstaclePrefab);
            Vector3    position;
            if (i <= 3)
            {
                position = positions[i];
            }
            else
            {
                position = new Vector3(Random.Range(m_obstaclePosMinMax[0], m_obstaclePosMinMax[1]),
                                       0, Random.Range(m_obstaclePosMinMax[0], m_obstaclePosMinMax[1]));
            }
            Physics.Raycast(position + new Vector3(0, 1000, 0), Vector3.down, out RaycastHit hit, Mathf.Infinity, m_environmentLayer);
            position.y = hit.point.y;

            float   randomRadius = Random.Range(m_obstacleRadiusMinMax[0], m_obstacleRadiusMinMax[1]);
            Vector3 scale        = new Vector3(randomRadius, randomRadius, randomRadius);
            obstacle.transform.position   = position;
            obstacle.transform.localScale = scale;
            obstacle.transform.rotation   = Random.rotation;
            m_obstacleList.Add(obstacle);

            // Set obstacle data
            m_obstacleDataArray[i].globalPosition = PluginHelpFunction.Vector3ToFloatArray(position);
            m_obstacleDataArray[i].radius         = randomRadius;
        }
        BehaviorPlugin.SetObstacleData(m_obstacleDataArray, m_obstacleNum);
    }