// 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)); } }
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(); } } }