A rigitbody GO for throwing but should not be pushed by other rigidbody GOs

Last thing im doing and then better be my last with Unity. What a horrible engine with horrible physics, camera going through walls (I know Cinemachine still fails) and many other basic things missing and requiring additional packages…

So I made a player— to player I attach this bow game object and arrow game object. They are child of the player, so they move with him. Arrow has Rigidbody because it will be thrown. I use function for throw:

void Update ()
{
    if(Input.GetKey("0"))
    {
        inventoryItemThrown.GetComponent<Rigidbody>().AddForce(fpViewer.transform.forward * throwForce);
    }
}

So at the place where player starts, no problem. the arrow shoots in straight line. BUT ONCE PLAYER goes near walls or lower FLOOR… Arrow just displaces completely.

Here is vid:

I know constraints I usually have Y position constrained, rotations are also constraint.

I could at most tick Y and X, but when the player changes floors, the arrow just starts displacing. If the player shoots the arrow on the lower floor, the arrow will float like is on the MOON ! Not like when it starts normally like a arrow projectile.

Ok it happens if the arrow collides with any other object that has Rigidbody even on the same floor.

So I need to make it static like the bow but if I tick ☑ IsKinematic I won’t be able to throw it

Nvm I just use IsKinematic and when I will throw I

void Start()
{
    rb = GetComponent<Rigidbody>();
}

// Update is called once per frame
void Update()
{
    if(Input.GetKey("0"))
    {
        rb.isKinematic = false;
        inventoryItemThrown.GetComponent<Rigidbody>().AddForce(fpViewer.transform.forward * throwForce);
    }
}