Detach a child from a parent

I have a game where my player is meant to pick up an object and have it hover next to them to simulate that they are holding it. Setting the object to be a child to the first person player worked out well, but the issue I’m having now is to have the object no longer be a child to the parent.

By this I mean that I press the “k” button and the object will no longer follow the player around as it’s no longer the child. I have tried transform.parent = null but to no effect.

{
    if (Input.GetMouseButton(0))
    {
        transform.parent = player.transform;
        Debug.Log("yeet");
        transform.localPosition = new Vector3(1, 0.8f, 1.5f);
        print(transform.localPosition.y);

        if (Input.GetKeyDown("k"))
        transform.parent = null;
        

    }

}

}

Is the code simply wrong or anything else? Thank you in advance!

You have your key down check inside your mouse button check. You probably want this outside the mouse button check. Also you may want to use GetMouseButtonDown instead since otherwise you would execute the code inside the if body every frame while holding the mouse button down.

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        transform.parent = player.transform;
        transform.localPosition = new Vector3(1, 0.8f, 1.5f);
    }
    if (Input.GetKeyDown("k"))
        transform.parent = null;
}

Ah yes, thank you so very much, especially for the quick reply! Worked wonderfully!

@Bunny83 you guys may not know it, but you saved my life!
I’m working on a totally different thing, a lot more complicated than this but its solution is simply detaching the child of the helicopter prefab that controls its speed relative to its rotation, kind of mimicking real physics in a tricky way