How to reference an object when a trigger touches it (3D)

I’m trying to make something that when a trigger touches it (in this case, an npc) it will reference and pick it up and move it around - ive tried to get it referenced but none of my ideas work - any help is appreciated!

Code:

public void OnTriggerEnter(Collider other)
{
    if (other.transform.tag == "Item" && this.Cooldown <= 0 && !this.HeldItem)
    {
       this.ItemTransform = other.GetComponent<Transform>();
       this.ItemHoldingCooldown = (UnityEngine.Random.Range(20f,60f));
       this.HeldItem = true;
    }
}

public void Update()
{
    if (this.HeldItem)
    {
        this.ItemTransform = this.MyTransform;
        this.ItemHoldingCooldown -= Time.deltaTime;
    }
}

EDIT!!

i want to update this a bit so that people understand it a bit more - the thing picking up the item is an npc. from what i can tell, the OnTriggerEnter function isnt working. i remade the code in the script for pickups - these will work, but its just the triggers driving me a bit nuts. all pickups use capsule colliders labled as triggers - the thing i want it to do is when an npc (tagged specifically for the scripts) touches it it moves it around for a while before dropping it. animations and gravity do not need to be accounted for. the other collider has a sphere collider (as another trigger) and a rigidbody.

Have you verified that the OnTriggerEnter function is called at the expected time? Does the code reach the point inside of the "if" statement in the OnTriggerEnter function? In the line "this.ItemTransform = this.MyTransform", what are you trying to do? I don't know if you can just set one object's transform equal to another's directly like that.

You could just parent the item to the player. this.ItemTransform.parent = MyTransform;