private void OnTriggerEnter2D(Collider2D c)
    {
        Collider2D collider = c;
        GameObject gameobj  = collider.gameObject;
        Vector3    position = gameobj.transform.position;

        string tag = gameobj.tag;

        if (tag == "coin")
        {
            // collect the coin
            CoinController coin_controller = gameobj.GetComponent <CoinController>();
            if (!coin_controller.has_been_collected)
            {
                level_controller.UpdateCoins();
                coin_controller.has_been_collected = true;
                coin_controller.SetSpriteToBlink();

                gameobj.GetComponent <Animator>().SetBool("has_been_collected", true);
            }
        }
        else

        if (tag == "enemy")
        {
            // hit the enemy
            if (rb.velocity.y < 0)
            {
                // bonk them in the head
                Vector3 temp = rb.velocity;
                temp.y      = 1.2f * jump_speed;
                rb.velocity = temp;

                is_jumping = true;
                is_falling = true;

                gameobj.GetComponent <Animator>().Play("Squash");
            }
            else
            if (!IsInvulnerable())
            {
                // get hit by the enemy
                level_controller.UpdateLives(-1);
                SetInvulnerable(true);
            }
        }
    }