Пример #1
0
    public void SpawnMovingObstacle(Vector3 atOrigin, int numberOfObjects)
    {
        float speedRand = UnityEngine.Random.Range(1, 2);

        AbstractObiectController.ComputeTargetPoint(atOrigin, Vector2.up, 0.5f);
        GameObject newObstacle = Instantiate(mCloneObstacle, atOrigin, mCloneObstacle.transform.rotation);

        newObstacle.GetComponent <ObstacolController>().SetAndComputeProperties(Vector2.up, newObstacle.transform.position, speedRand, 2);
        newObstacle.gameObject.tag   = "ClonaObstacol";
        newObstacle.transform.parent = this.transform.parent;
    }
    public void SpawnMovingObstacle(Vector3 atCameraOrigin, int numberOfObjects)
    {
        if (numberOfObjects > 3)
        {
            numberOfObjects = 3;
        }

        int     chosenDirection = UnityEngine.Random.Range(0, mDirections.Length - 1);
        Vector2 direction       = mDirections[chosenDirection];

        int[] verticalPosAvailable   = { 1, 1, 1 };
        int[] horizontalPosAvailable = { 1, 1, 1 };

        // daca directia aleasa e pe diagonala, ne asiguram ca obstacolul nu va iesi din ecranul sau

        if (mDirections[chosenDirection] == new Vector2(1, 1))
        {
            verticalPosAvailable[0] = 0;
        }
        else if (direction == new Vector2(1, -1))
        {
            verticalPosAvailable[2] = 0;
        }
        else if (direction == new Vector2(-1, -1))
        {
            verticalPosAvailable[2] = 0;
        }
        else if (direction == new Vector2(-1, 1))
        {
            verticalPosAvailable[0] = 0;
        }

        bool weReverse;


        // se spawneaza obiectele
        for (int i = 0; i < numberOfObjects; i++)
        {
            if (UnityEngine.Random.Range(0.0f, 1.0f) > 0.5f)
            {
                weReverse = true;
                print(UnityEngine.Random.Range(0f, 1f));
            }
            else
            {
                weReverse = false;
                print(UnityEngine.Random.Range(0f, 1f));
            }

            if (weReverse == true)
            {
                direction *= -1;
            }
            float   speedRand   = UnityEngine.Random.Range(1, 2);
            Vector2 spawnOrigin = WhereToSpawnObstacle(direction, atCameraOrigin, ref horizontalPosAvailable, ref verticalPosAvailable);   // !!! Direction must not be normalized
            AbstractObiectController.ComputeTargetPoint(spawnOrigin, direction.normalized, 2);

            GameObject newObstacle = Instantiate(mCloneObstacle, spawnOrigin, mCloneObstacle.transform.rotation);
            newObstacle.GetComponent <ObstacolController>().SetAndComputeProperties(direction, newObstacle.transform.position, speedRand, 2);
            newObstacle.gameObject.tag = "Obstacol";

            if (weReverse == true)
            {
                direction *= -1;
            }
        }
    }