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