Exemple #1
0
    // Update is called once per frame
    void Update()
    {
        Vector3 p1 = m_obj1.transform.position + m_offset;
        Vector3 p2 = m_obj2.transform.position + m_offset;

        Vector3 toObj2 = p2 - p1;

        bool show = toObj2.magnitude > m_lowDist;

        m_renderer.enabled = show;
        m_tetherParticle.gameObject.SetActive(show);
        // if player going away from other player AND player distance > thresholdDistance
        if (show)
        {
            float interp = (toObj2.magnitude - m_lowDist) / (m_highDist - m_lowDist);
            transform.position = (p1 + p2) / 2.0f;
            Quaternion interpRot = Quaternion.LookRotation(Vector3.Cross(toObj2.normalized, Vector3.up), toObj2.normalized);
            transform.rotation   = interpRot;
            transform.localScale = new Vector3(transform.localScale.x, ((toObj2.magnitude - 1.0f) * 0.49f), transform.localScale.z);
            Color interpColor = Color.Lerp(m_lowColor, m_highColor, interp);
            m_renderer.material.color = interpColor;
            var main = m_tetherParticle.main;
            main.startColor = new Color(interpColor.r, interpColor.g, interpColor.b, 1.0f);
            var emit = m_tetherParticle.emission;
            emit.rateOverTime = (interp * m_modEmit) + m_baseEmit;
            var shape = m_tetherParticle.shape;
            shape.radius = toObj2.magnitude / 2.0f;
            m_camera.LowPriorityShake(m_shakeDuration, Mathf.Lerp(m_minShake, m_maxShake, interp));
        }
    }
Exemple #2
0
 private void OnTriggerStay(Collider other)
 {
     if (m_breath.IsBreathingFire())
     {
         m_camera.LowPriorityShake(m_shakeDuration, m_fireShakeIntensity);
         BurnableScript burnable = other.gameObject.GetComponent <BurnableScript>();
         if (!burnable.IsMaxFire())
         {
             burnable.AddFire(Time.deltaTime);
             burnable.Burning();
         }
     }
 }