private int initialIndex;							// Used to remember the initial index.

		// Use this for initialization.
		void Start () {
			// Setting up references.
			platform = transform.parent.GetComponent<Platform>();
			movingForward = moveForward;
			nextWaypoint = waypoints[currentIndex];
			parent = transform.parent.gameObject;
			initialIndex = currentIndex;
		}
		// Update is called once per frame.
		void Update () {
			// Check if the player is on a platform.
			platformCollider = Physics2D.OverlapCircle(player.groundCheck.position, player.groundRadius, player.platformLayer);
			
			// If the player is on a platform and not jumping through it...
			if (platformCollider && !currentPlatform && !player.jumpingThrough) {
				// ... set the current platform.
				currentPlatform = platformCollider.transform.parent.transform.parent.gameObject;

				// Set the player's rotation based on the current platform's rotation if rotateOnSlope is enabled.
				if (player.rotateOnSlope) { transform.rotation = currentPlatform.transform.rotation; }

				// Make sure the player is considered grounded.
				player.groundCollider = platformCollider;

				// Get the platform's script.
				platformClass = currentPlatform.GetComponent<Platform>();

				// Shake the camera when on a sinking platform if camera shaking is enabled.
				if (platformClass.PlatformTypeIs(PlatformTypes.Sinking)) {
					platformClass.ShakeCamera();
				}
				
				// If the player is on a moving platform and should use the platform's friction...
				if (platformClass.PlatformTypeIs(PlatformTypes.Moving) && movingPlatform.useFriction) {
					// ... set the friction of the platform.
					platformFriction = platformCollider.gameObject.GetComponent<BoxCollider2D>().sharedMaterial.friction;
					
					// Set the friction of the player.
					playerFriction = GetComponent<BoxCollider2D>().sharedMaterial.friction;
					
					// Set the slowdown based on the friction from both the player and platform.
					slowdown = platformFriction * playerFriction;
				}

				// Let the platform know that the player is standing on it.
				platformClass.SetPlayerOnPlatform(true);
			// Or else...
			} else if (!platformCollider && currentPlatform) {
				// .. let the platform know the player isn't standing on it anymore.
				platformClass.SetPlayerOnPlatform(false);

				// Reset the variables.
				currentPlatform = null;
				platformClass = null;
				unstick = false;
			}

			// Timer for resetting the unstick variable.
			if (unstick) {
				if (unstickTimer > 0) {
					unstickTimer -= Time.deltaTime;
				} else {
					unstick = false;
				}
			}
		}
		private float resetTimer;						// Timer to reset the platform's position.

		// Use this for initialization.
		void Start () {
			platform = GetComponent<Platform>();
		}