private void OnCollisionEnter(Collision collision)
 {
     if (collision.collider.CompareTag("Player"))
     {
         normal = -collision.contacts[0].normal;
         if (m_bIsActive)
         {
             ball.m_rBody.AddForce(normal * m_fReflectScalar, ForceMode.Impulse); // Add force based on normal and scalar for bounce.
             EnableLight();                                                       // Enable light for effect.
             if (m_iScore > 0)
             {
                 BallScript.instance.AddScore(m_iScore);
                 transform.DOComplete();
                 transform.DOPunchScale(m_vStartScale * 1.02f, m_fLightDelay);
                 if (m_bIsBonus)
                 {
                     bonusSource.Play();
                     bonusText.gameObject.SetActive(true);
                     bonusText.DOComplete();
                     bonusText.transform.DOScale(1.1f, 1.0f).From(Vector3.one).OnComplete(() => bonusText.gameObject.SetActive(false));
                 }
                 else
                 {
                     SoundManager.instance.PlaySound(SoundManager.instance.HitSound, 0.4f, Random.Range(1.0f, 1.5f));
                 }
             }
         }
         else
         {
             ball.m_rBody.velocity = ball.m_rBody.velocity * 0.9f; // Really slow it down but not completely.
             //ball.m_rBody.AddForce(normal * 0.1f, ForceMode.Impulse); // Add a tiny bit of force so it doesn't get stuck (playability)
         }
     }
 }
Exemple #2
0
    void AnimateNoMoreCoinsText()
    {
        // Complete animations (if it's running)
        noEnoughCoinsText.transform.DOComplete();
        noEnoughCoinsText.DOComplete();

        noEnoughCoinsText.transform.DOShakePosition(3f, new Vector3(5f, 0f, 0f), 10, 0);
        noEnoughCoinsText.DOFade(1f, 3f).From(0f).OnComplete(() => {
            noEnoughCoinsText.DOFade(0f, 1f);
        });
    }