예제 #1
0
    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;
    }
예제 #2
0
    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;
    }