/* * 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(); } }