예제 #1
0
        /// <summary>
        /// Shake function used by all public shake functions.
        /// </summary>
        private void Shake(GameObject target, float strength, float smoothness, float easeInTime, float upTime, float easeOutTime)
        {
            if (m_Shakes == null)
            {
                m_Shakes = new Dictionary <GameObject, ShakeInformation>();
            }

            ShakeInformation newShake = new ShakeInformation();

            newShake.OriginalPosition = UseLocalPosition ? target.transform.localPosition : target.transform.position;
            newShake.OriginalRotation = UseLocalRotation ? target.transform.localEulerAngles : target.transform.eulerAngles;

            newShake.Strength    = strength;
            newShake.Smoothness  = smoothness;
            newShake.EaseInTime  = easeInTime;
            newShake.UpTime      = upTime;
            newShake.EaseOutTime = easeOutTime;
            newShake.Delta       = 0.0f;

            if (m_Shakes != null && m_Shakes.ContainsKey(target) && m_Shakes[target].TotalTime() > newShake.TotalTime())
            {
                return;
            }
            else if (m_Shakes.ContainsKey(target))
            {
                m_Shakes.Remove(target);
            }

            m_Shakes.Add(target, newShake);
        }
예제 #2
0
        /// <summary>
        /// Forces the given object to stop shaking with a given ease out.
        /// </summary>
        public void EndShake(GameObject target, float easeOutTime)
        {
            if (m_Shakes == null)
            {
                m_Shakes = new Dictionary <GameObject, ShakeInformation>();
            }

            if (m_Shakes.ContainsKey(target))
            {
                ShakeInformation info = m_Shakes[target];

                info.UpTime      = 0.0f;
                info.EaseOutTime = easeOutTime;

                m_Shakes[target] = info;
            }
            else
            {
                Debug.LogWarning("ScreenShake : Trying to end a non-existing shake.");
            }
        }