// Update is called once per frame void Update() { float sign = m_IsHovered ? 1.0f : -1.0f; m_BlendAmount = Mathf.Clamp( m_BlendAmount + m_BlendFactor * Time.deltaTime * sign, 0.0f, 1.0f); m_Text.color = Color.Lerp(m_InitialColor, m_HoverColor, EasingFunctions.InOutQuat(m_BlendAmount)); }
public IEnumerator CloseDoorAnimation() { m_CurrentT = 0.0f; m_Light.enabled = false; while (m_CurrentT < m_MaxT) { float t = Mathf.Clamp(m_CurrentT / m_MaxT, 0.0f, 1.0f); m_CurrentT += Time.deltaTime; t = EasingFunctions.InOutQuat(t); m_Door.localRotation = Quaternion.Slerp(m_OpenDoorRotation, m_ClosedDoorRotation, t); yield return(new WaitForEndOfFrame()); } }
public IEnumerator RotateToTarget(Quaternion targetRotation, bool openDoor = false) { float currentT = 0.0f; float maxT = 1.9f; Quaternion initialRotation = transform.rotation; float t = 0.0f; while (t < 1.0f) { t = Mathf.Clamp(currentT / maxT, 0.0f, 1.0f); if (t >= 1.0f) { if (openDoor) { MicrowaveController microwaveController = GetComponent <MicrowaveController>(); if (microwaveController != null) { microwaveController.OpenDoor(); } TvController tvController = GetComponent <TvController>(); if (tvController != null) { tvController.SwitchOnScreen(); } } } currentT += Time.deltaTime; t = EasingFunctions.InOutQuat(t); Quaternion currentRotation = Quaternion.Slerp(initialRotation, targetRotation, t); transform.rotation = Quaternion.AngleAxis(currentRotation.eulerAngles.y, Vector3.up); yield return(new WaitForEndOfFrame()); } }