IEnumerator RotateLayer(CubeLayer aLayer, float aDegree, float aSpeed) { // mutex of sorts m_Rotating = true; //rotatePivot.localPosition = Vector3.zero; rotatePivot.localRotation = Quaternion.identity; // Set each layer's cube parent to rotation pivot foreach (Transform t in aLayer) { t.parent = rotatePivot; } // Set angle to rotate and do rotation Quaternion target = Quaternion.AngleAxis(aDegree, aLayer.normal); for (float t = 0f; t <= 1f; t += aSpeed * Time.deltaTime) { rotatePivot.localRotation = Quaternion.Slerp(Quaternion.identity, target, t); yield return(null); } // Chain rotation rotatePivot.localRotation = target; // Reset parent back to whole cube foreach (Transform t in aLayer) { t.parent = transform; } m_Rotating = false; }
IEnumerator RotateLayer(CubeLayer aLayer, float aDegree, float aSpeed) { m_Rotating = true; rotatePivot.localPosition = Vector3.zero; rotatePivot.localRotation = Quaternion.identity; foreach (Transform t in aLayer) { t.parent = rotatePivot; } Quaternion target = Quaternion.AngleAxis(aDegree, aLayer.normal); for (float t = 0f; t <= 1f; t += aSpeed * Time.deltaTime) { rotatePivot.localRotation = Quaternion.Slerp(Quaternion.identity, target, t); yield return(null); } rotatePivot.localRotation = target; foreach (Transform t in aLayer) { t.parent = transform; } m_Rotating = false; }