public void Cycle(bool clockwise) { for (int i = 0; i < count; i++) { var original = i; original = RangeMath.CycleInt(original, count - 1, !clockwise); BeginSlide(original, i); } cooldown = true; }
IEnumerator RotateWorld(bool clockwise) { rotating = true; movement.gravity = Vector3.zero; GravityState oldState = gravityStates[gravityIndex]; gravityIndex = RangeMath.CycleInt(gravityIndex, gravityStates.Length - 1, clockwise); GravityState newState = gravityStates[gravityIndex]; Quaternion oldRotation = Quaternion.Euler(oldState.objectRotation); Quaternion newRotation = Quaternion.Euler(newState.objectRotation); float oldZAngle = pivot.localEulerAngles.z; float newZAngle = oldZAngle + rotationDegrees * (clockwise ? -1 : 1); float timer = 0; while (timer < rotationTime) { timer += Time.deltaTime; if (timer > rotationTime) { timer = rotationTime; } foreach (Transform rotor in toRotate) { rotor.rotation = Quaternion.Lerp(oldRotation, newRotation, timer / rotationTime); } float z = Mathf.Lerp(oldZAngle, newZAngle, timer / rotationTime); VectorMath.SetZRotation(pivot, z); yield return(null); } movement.gravity = newState.gravityDirection; rotating = false; }
public void Cycle(bool clockwise) { index = RangeMath.CycleInt(index, gravityDirections.Length - 1, clockwise); }