public IEnumerator Rotate(float x, float y, float z) { // disable fuse button during rotation to let rotation complete before attachment fuseButton.interactable = false; // Integration for battery power. if (!controlsDisabled && !rotating) { BatterySystem.SubPower(1); } // Can only start rotating if not already rotating. Prevents bugs with part movement. if (!rotating) { // Set rotate flag and start rotating. // Flag is reset every frame to ensure the check only runs at the end of all queued rotations. rotating = true; for (int i = 0; i < 30; i++) { toRotate.transform.Rotate(x / 30f, y / 30f, z / 30f, Space.World); rotating = true; yield return(null); } rotating = false; yield return(null); // Wait a frame to see if another active rotation resets this flag to true. if (!rotating) { StartCoroutine(CheckRotation()); } } }
public void startRotatingForward() { // disable battery restrictions when in tutorial if (tutorialOn || BatterySystem.GetPower() > 0) { if (!tutorialOn) { BatterySystem.SubPower(1); } numXClicks++; RotateBehavior rotateBehavior = objectToRotate.GetComponent <RotateBehavior>(); if (!rotateBehavior.rotating()) { //rotate rotateBehavior.setRotatingForward(true); float targetRotation = rotateBehavior.getTargetRotation(); objectToRotate.transform.Rotate(-targetRotation, 0, 0); rotateBehavior.setEndRotation(objectToRotate.transform.rotation); objectToRotate.transform.Rotate(targetRotation, 0, 0); } timerStart = true; } }
IEnumerator Rotate(float x, float y, float z) { // Integration for battery power. if (!tutorialOn) { BatterySystem.SubPower(1); } // Set rotate flag and start rotating. // Flag is reset every frame to ensure the check only runs at the end of all queued rotations. rotating = true; for (int i = 0; i < 45; i++) { toRotate.transform.Rotate(x / 45f, y / 45f, z / 45f, Space.World); rotating = true; yield return(null); } rotating = false; yield return(null); // Wait a frame to see if another active rotation resets this flag to true. if (!rotating) { StartCoroutine(CheckRotation()); } }