void OnCollisionEnter2D(Collision2D collision)
    {
        if (leftCollision)
        {
            ContactPoint2D[] contact = new ContactPoint2D[1];
            collision.GetContacts(contact);

            moveSpeed *= collisionSpeedCoefficient;
            float oldMoveAngle = moveAngle - 180f;
            moveAngle = ReflectAngle(moveAngle, contact[0].normal);

            float sparkDuration = 0.3f + ((moveSpeed / initialSpeed) * 0.4f);

            for (int i = 0; i < 2; i++)
            {
                Spark.GetFromPool(sparkPrefab).Initialize(contact[0].point, oldMoveAngle + Random.Range(-5f, 5f),
                                                          sparkDuration,
                                                          (moveSpeed / initialSpeed) * Random.Range(0.5f, 2f), 0.2f, Random.Range(1f, 2f));
            }

            for (int i = 0; i < 2; i++)
            {
                Spark.GetFromPool(sparkPrefab).Initialize(contact[0].point, moveAngle + Random.Range(-5f, 5f),
                                                          sparkDuration,
                                                          (moveSpeed / initialSpeed) * Random.Range(0.5f, 2f), 0.2f, Random.Range(1f, 2f));
            }
        }

        leftCollision = false;
    }