Exemple #1
0
    /*
     *	FUNCTION: Place element on the required position.
     *	PARAMETER 1: The obstacle, currency unit or powerup to instantiate.
     *	PARAMETER 2: The position where to place the element.
     *	PARAMETER 3: The angle of the element which is based on path's curve.
     *	PATAMETER 4: The Raycast hit information which is based on the element's placement position.
     */
    private void instantiateElement(int elementNumber, Vector3 v3Position, float CurrentAngle, Vector3 hitInfoNormal)
    {
        if (elementNumber < 0)
        {
            return;
        }

        Transform ObjectHandle;

        if (elementNumber < iObstacleCount)        //obstacles
        {
            ObjectHandle = elements[elementNumber].tPrefabHandle[elements[elementNumber].iPrefabHandleIndex];
            elements[elementNumber].iPrefabHandleIndex++;
            if (elements[elementNumber].iPrefabHandleIndex >= elements[elementNumber].tPrefabHandle.Length)
            {
                elements[elementNumber].iPrefabHandleIndex = 0;
            }
            ObjectHandle.gameObject.SetActive(true);
            ObjectHandle.up               = hitInfoNormal;
            ObjectHandle.position         = v3Position;
            ObjectHandle.localEulerAngles = new Vector3(0, 0, 0);
            ObjectHandle.Rotate(0, CurrentAngle, 0);
        }
        else if (elementNumber >= iObstacleCount && elementNumber < (iObstacleCount + iPowerupCount))      //powerups
        {
            ObjectHandle = elements[elementNumber].tPrefabHandle[elements[elementNumber].iPrefabHandleIndex];
            elements[elementNumber].iPrefabHandleIndex++;
            if (elements[elementNumber].iPrefabHandleIndex >= elements[elementNumber].tPrefabHandle.Length)
            {
                elements[elementNumber].iPrefabHandleIndex = 0;
            }
            ObjectHandle.gameObject.SetActive(true);
            ObjectHandle.up               = hitInfoNormal;
            ObjectHandle.position         = v3Position;
            ObjectHandle.localEulerAngles = new Vector3(0, 0, 0);
            ObjectHandle.Rotate(0, CurrentAngle, 0);
            (ObjectHandle.GetComponent <PowerupScript>() as PowerupScript).initPowerupScript();
        }
        else if (elementNumber == (iObstacleCount + iPowerupCount))      //currency
        {
            ObjectHandle = elements[elementNumber].tPrefabHandle[elements[elementNumber].iPrefabHandleIndex];
            elements[elementNumber].iPrefabHandleIndex++;
            if (elements[elementNumber].iPrefabHandleIndex >= elements[elementNumber].tPrefabHandle.Length)
            {
                elements[elementNumber].iPrefabHandleIndex = 0;
            }
            ObjectHandle.gameObject.SetActive(true);
            ObjectHandle.up               = hitInfoNormal;
            ObjectHandle.position         = v3Position;
            ObjectHandle.localEulerAngles = new Vector3(0, 0, 0);
            ObjectHandle.Rotate(0, CurrentAngle, 0);
            (ObjectHandle.GetComponent <PowerupScript>() as PowerupScript).initPowerupScript();
        }
    }