// Update is called once per frame void FixedUpdate() { if (this.state.Equals(PowerupState.NoPowerup)) { return; } else if (this.state.Equals(PowerupState.ActivePowerup)) { //Handle rotation to designated coordinates if (iterAngle > this.angle) { this.state = PowerupState.Waiting; this.iterAngle = 0; } else { gameObject.transform.Rotate(new Vector3(0, 0, rotationSpeed * Time.deltaTime)); this.iterAngle += 1; } } else if (this.state.Equals(PowerupState.Waiting)) { if (this.iterWait > 150) { this.powerUpController.executePowerup(); this.state = PowerupState.Refreshing; this.iterWait = 0; } else { this.iterWait += 1; } } else if (this.state.Equals(PowerupState.Refreshing)) { //Handle restored state if (iterAngle > (this.angle - (fullRotation * 2 + 1))) { powerUpController.DestoryPowerUp(); this.state = PowerupState.NoPowerup; this.angle = 0; this.iterAngle = 0; } else { gameObject.transform.Rotate(new Vector3(0, 0, -rotationSpeed * Time.deltaTime)); this.iterAngle += 1; } } }