Exemplo n.º 1
0
    void Update()
    {
        if (m_Gun.m_IsFiring)
        {
            if (m_Gun.m_DidJustFire)
            {
                float t_X = Random.Range(-m_MaxRotation, m_MaxRotation);
                float t_Y = Random.Range(-m_MaxRotation, m_MaxRotation);
                float t_Z = Random.Range(-m_MaxRotation, m_MaxRotation);
                transform.localRotation = Quaternion.Euler(t_X, t_Y, t_Z);
            }
            float t_SlideFactor = m_Gun.GetTimeFactor();
            float t_Factor      = m_SlideCurve.Evaluate(t_SlideFactor);

            transform.localPosition = transform.localRotation * new Vector3(0.0f, 0.0f, t_Factor * m_SlideDistance);
            m_LastFireTime          = Time.time;
            m_LastFirePosition      = transform.localPosition;
            m_LastFireRotation      = transform.localRotation;
        }
        else
        {
            float t_Factor = (Time.time - m_LastFireTime) / 0.5f;
            if (t_Factor < 1.0f)
            {
                transform.localPosition = Vector3.Lerp(m_LastFirePosition, Vector3.zero, t_Factor);
                transform.localRotation = Quaternion.Lerp(m_LastFireRotation, Quaternion.identity, t_Factor);
            }
            else
            {
                transform.localPosition = Vector3.zero;
                transform.localRotation = Quaternion.identity;
            }
        }
    }